moves crucial part of introduceTopLevel to Run

This is done to make it easy for other parts of the compiler to use
the (quite involved) logic of introduceTopLevel.
refactors signature handling in macro engine

Previously actual and reference macro signatures were represented as
tuples of vparamss, rets, and sometimes tparams. Now they are all
abstracted behind MacroImplSig.
untyped macros, part I: parser changes
untyped macros, part II: untyped-aware macro engine
make use of UntypedType:
* Inferred type of macro defs
* Return type of macro types