mark ModuleInfo as read-only data
fix Issue 13043 - Redundant linking to TypeInfo in non-root module
fix Issue 13045 - TypeInfo.getHash should return consistent result with object equality by default

If struct member field has toHash method, or has non-bitwise equality, generate __xtoHash implicitly to guarantee `a != b || typeid(S).getHash(&a) == typeid(S).getHash(&b)`.
Merge pull request #3551 from MartinNowak/immutableModuleInfo

mark ModuleInfo as read-only data
Merge pull request #3710 from 9rnsr/fix_hash

Introduce correct default hash calculation that is consistent with object equality