[interp] Optimize multidimensional array access (mono/mono#16822)
* [interp] Pass rank instead to LDELEMA
It feels more intuitive and uses less computations.
* [interp] Avoid unnecessary type check
Loading element address of array requires type checks only if the elements of the array are references.
* [interp] Avoid using MINT_CALLRUN for Get intrinsic
It is very slow. Use ldelema/ldobj pair instead.
* [interp] Optimize MINT_LDELEMA
* [interp] Rename ldelema_fast to ldelema1
ldelema_fast was handling arrays with a single dimension. Rename it to better suggest this.
* [interp] Avoid using MINT_CALLRUN for Set intrinsic
* [interp] Remove some duplicated and confusing code
* [interp] Fix stack type of MINT_NEWARR result
Commit migrated from https://github.com/mono/mono/commit/
aaaa2bdd5e5795dfba689cde110999a9a9225fb2