JIT: improve types for single def locals and temps (dotnet/coreclr#10471)
* JIT: improve types for single def locals and temps
Track whether a local has a single definition, and if so, if it has
a reference type, try and update its type from the declared type to
a better type taken from the value being assigned to the local.
Obtain types for some of the 'short-lived' ref type temps that should
have a single definition. Use both the tree and the eval stack as sources
of type information (the latter can be phased out if/when all tree nodes
can return rich type information).
Refactor the code that sets or updates lvClassHnd into utilities
to provide better auditing of type flow and make the set/update process
a bit more rigorous.
Cleanup the code that passes argument values a bit by commoning redundant
argument lookup expressions.
Commit migrated from https://github.com/dotnet/coreclr/commit/
e99037f5c750b52016b940f964cee920b1579ff8