JIT: cleanup redundant exact type tests (dotnet/coreclr#27397)
Generate exact type assertions from exact type tests in the IR. Look for these
assertions and set the value number for RELOPs with known outcomes. Process
JTRUE nodes in the main assertion prop optimization loop.
This combination of changes removes residual exact type tests from cast
expansions when they are anticipated by user inserted exact type tests, as in:
```C#
if (b.GetType() == typeof(D))
{
return (D)b;
}
```
Closes dotnet/coreclr#14471.
Commit migrated from https://github.com/dotnet/coreclr/commit/
5216c8c843d2f34efccb070a840dfd42d6e7e230