Introduce correct default hash calculation that is consistent with object equality

[Issue 13045](https://issues.dlang.org/show_bug.cgi?id=13045) - TypeInfo.getHash should return consistent result with object equality by default
[Issue 13043](https://issues.dlang.org/show_bug.cgi?id=13043) - Redundant linking to TypeInfo in non-root module
`assert` is needed?