[mono][aot] Prefer concrete instances instead of gshared ones for met… (#78182)
* [mono][aot] Prefer concrete instances instead of gshared ones for methods containing type equality checks.
For example, calls to Vector<T>.IsSupported cannot be optimized away in a method where T
is T_BYTE because its written as:
```
get => (typeof(T) == typeof(byte)) ||
(typeof(T) == typeof(double)) ||
```
and T_BYTE could be instantiated with an enum whose basetype is byte.
Fixes some of the issues in https://github.com/dotnet/runtime/issues/78163.
* Avoid an assert when compiling Vector<object> instances.