[mono][aot] Optimize constrained calls made from gsharedvt methods. (#79339)
The calls are of the form:
.constrained T_GSHAREDVT
callvirt <method>
Whenever T_GSHAREDVT is a reference or value type is only known at runtime.
Previously these were handled by passing the arguments to a JIT icall which
computed the target method and did a runtime invoke.
Added 2 optimizations:
* Precompute the data which depends only on the type and the method,
store it in an rgctx slot and pass it to the JIT icall.
* Add a fastpath for simpler cases which makes an indirect call
from generated code.