move and duplicate macro defns in sha2 to make them hygienic

... it would also have been possible to add all of their dependencies,
but that would have increased the already-lengthy list of parameters.
Also, if we had macros that could expand into macro defns, you could
stage it. This seemed like the least painful choice.
disallow ident equality checks when contexts are not equal
rename resolve to mtwt_resolve
ident->name
compare macro tokens hygienically (commented out)
try removing basically dead code in resolve
add hygiene support fns, move them around.

also adds test cases
one-line comment
update librustc to use name comparison in most cases, and mtwt_resolve comparison in others
make ifn macro non-capturing
resolve test case

resolve must ignore syntax context when comparing module names
flip the switch on let renaming
renaming test cases
comments in ast.rs
removed unneccessary SyntaxExpander structs
separate ItemDecorator from ItemDecorator
refactor so tt_fold only requires an ident->ident fn
adding test case to check marking/unmarking
comments only
remove FIXME #2888, now bug is fixed