Fix issue with hoisting and copy prop interaction (#85493)
* Fix issue with hoisting and copy prop interaction
After hoisting creates a tree copy, it morphs it. That morph might
lose the value numbers on LCL_VAR uses, but leave the SSA numbers.
Copy prop was assuming that such a use had a VN. Instead, check this
dynamically instead of asserting.
Fixes #84619
* Further optimize cast in fgOptimizeCastOnStore()
If we optimize the cast, call `fgOptimizeCast` to see if it can be
optimized further.
* Add regression test
* Feedback