Machinery for hygienic macros, inspired by the
 Matthew Flatt, Ryan Culpepper, David Darais, and Robert Bruce Findler.
2012. Macros that work together: Compile-time bindings, partial expansion,
and definition contexts. J. Funct. Program. 22, 2 (March 2012), 181-216.
A mark is a unique id associated with a macro expansion.
A SyntaxContext represents a chain of macro expansions (represented by marks).