* To @flow: MacroExpander.
* Explicitly pass context into defineMacro called with a function.
Instead of binding `this` when `defineMacro` is invoked
with a function, we now pass an explicit context as a
parameter to the function. This is a bit more obvious
and is currently more type-safe due to a bug in `@flow`:
https://github.com/facebook/flow/issues/4809
* Per feedback, rename some types, fields, and variables.