[new AA] core.internal.hash fixes

This PR contains the follownig changes:
1. some hashOf functions has unmarked with `@trusted nothrow`: we can't guarantee that struct hashOf is `@trusted` or `nothrow`.
2. typedef support added: current AA implementation supports typedef keys (deprecated but allowed), and dmd tests checks that typedef keys are allowed.
3. `typeof(null)` case for hashOf added.
4. `seedHash` has unmarked with `private`, because this function is usefull for hash chaining inside user `toHash`
5. if struct has toHash member, but it cannot be called with passed this hashOf writes warning, but doesn't raise error. (for backward compatibility: current AA implementation ingores wrong toHash in this case)
6. pass value by ref into foreach in `hashOf` for AA: avoid to call postblit.
You could put the stuff below into a nested function and turn the pragma msg warning into a deprecation message.