Typeful transformations

A long overdue overhaul of macro internals

 - Use s.r.i.SymbolTable and s.t.n.Global rather than the public reflection API
 - Avoid reset + retypecheck, instead hang onto the original types/symbols
 - Eliminated duplication between AsyncDefinitionUseAnalyzer and ExprBuilder
   - Instead, decide what do lift *after* running ExprBuilder
   - Account for transitive references local classes/objects and lift them
     as needed.
 - Make the execution context an regular implicit parameter of the macro
 - Fixes interaction with existential skolems and singleton types
 - Emit compliant range positions

Fixes #6, #13, #16, #17, #19, #21.

Review by @phaller