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
added FIXME comment
drop back to a simple gensym approach for fresh-name.

this is necessary so that the new idents are connected to the original strings.
this is important both for error messages, and so that top-level refs get connected
to the right things.
comments
make comparison of special_idents non-hygienic
use empty_ctxt to simplify downstream
test case work