Add a macro object.
Add a macro object.

A macro object allows to bind arguments (just like a closure) to a macro, to
modify these arguments and to call the underlying macro. This is useful to
implement complicated semantics where the full set of arguments is not known
at the creation of the macro.

ldionne/joy,ldionne/joy