Encapsulates reifier state
When untangling reifier symbol tables from the reifier itself,
I discovered that encoding of a symbol table (e.g. producing corresponding reificode)
might cause subsequent reification (e.g. when filling in signatures and annotations for syms).
This is a mess in the face of nested reifications, splices and inlining of thereof,
so I made SymbolTable immutable, which brought a significant amount of sanity.
However that wasn't enough. Sure, symbol table became immutable, but the reifier still needed
to mutate its symtab field during reification. This caused nasty desyncs between the table being encoded
and the table of the underlying reifier, so I decided to encapsulate the entire state here,
so that encoding can backup the state before it starts and restore it after it completes.