Implement comparisons for all ObjectNodes (dotnet/coreclr#27355)
* Preparation to introduce parallelism into crossgen2
- Add comparison functions for all object nodes and sort object nodes before they are emitted to the PE.
- Sort ImportSection signatures based on their imports to keep them in sync.
- Add determinism test.
- Change dictionaries in ReadyToRunCodegenNodeFactory and ReadyToRunSymbolNodeFactory to NodeCaches (i.e. ConcurrentDictionary, at the moment)
- Add structs to act as keys for the above NodeCaches (MethodFixupKey, DynamicHelperKey, ReadyToRunHelperKey)
- Synchronize logger
- Update some Dictionaries to ConcurrentDictionary
- Sort GCRefMapNode methods and lock the add since AddImport might be called my multiple threads at once.
- Create RandomInsertStack to speed up randomization when using CoreRT_DeterminismSeed.
Commit migrated from https://github.com/dotnet/coreclr/commit/
230117910d7c033eb1025ba350731163e80da9d6