Preparation to introduce parallelism into CrossGen2 (dotnet/coreclr#27068)
* Preparation to introduce parallelism into CrossGen2
- 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
- Add .Equals and GetHashCode to SignatureContext.
Commit migrated from https://github.com/dotnet/coreclr/commit/
2ac3fc45d5ea5100caaf578dd4baaa1f9fd28640