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
re-add debug version
re-add lost call to expand_block_elts
test case work
test case support fns, remove debugging test case
new test that uncovers bug in fold
fixed bug in fold's traversal of cast exprs
added test for ptr_eq on fresh_name-generated idents
added gensym_copy mechanism to ensure sharing of pointers in the interner

this makes comparisons constant-time, and enables spelling-comparison
of identifiers, crucial in many parts of resolve.
added IterBytes for 4-tuples
marking on both input and output from macros. nice shiny new test case framework
add test case for macro token comparison
comments
add temporarily unused ctxt field to mac_invoc_tt
rework fold so that fold_tts takes an ast_fold rather than a thunk, stop using closures in ident traversal
WIP: adding context to macros