Refactor mtwt hygiene code

Moves mtwt hygiene code into its own mod, so that mtwt_resolve becomes
just resolve for example. In preparation for adding namespace support
into it. Also, it lives in its own commit so that reviewing is much
easier.
Add namespace support for rename operation

Maintains two renaming tables, one for regular idents and one for
lifetime idents (a loop label is of lifetime kind) so that let bindings
and loop labels with same name won't clash. Also, the mtwt hygiene code
is now @-free.

Closes #12512.
Move mtwt hygiene code to its own file

Also fixes some FIXME's
Fix FIXME 5074 in the mtwt hygiene code

which leads to a 2x speed gain for expansion pass.
Move SCTable and SyntaxContext_ from ast to ext::mtwt

to which they belong.
Specialize hasher for ext::mtwt lookup tables

which leads to another 2x speed gain for expansion pass.