Multicorejit unification (#48326)
* Unify simple and generic methods in multicorejit
* Disable NDirect methods in MulticoreJit
Current multicorejit implementation in master has multiple flaws with NDirect methods:
- exception might be thrown inside GetStubForInteropMethod at some point for NDirect method, which will kill background thread, thus, reducing effectiveness of multicorejit (for example, occurs when multicorejit is used with crossgen2)
- some NDirect methods can lead to asserts during load inside GetStubForInteropMethod (for example, EvpMdCtxDestroy (0x6000044 token) from System.Security.Cryptography.Algorithms.dll)
* Add MultiCoreJitMinNumCpus env variable with default value =2 to configure minimum allowed number of cpus for MultiCoreJit.
On arm with cpu hotplug it should be set to 1.
* Do not save overall record length for methods
This change reduces mcj profile size
* Store non-generic methods using token instead of signatures
This change reduces mcj profile size