refactors macro runtimes

Following typedMacroBody, macroRuntime along with its friends has also
been moved out into a separate component.
changes some definitions to use Symbol.map
applying Jason's aesthetics suggestion