Support macros

This adds three directives:

- `@macro (name)`: Starts recording a macro identified by 'name'
- `@endmacro`: Stops recording a macro
- `@do (name, kwargs)`: "Execute" the macro identified by 'name' by replacing the
  directive by the recorded macro contents, using kwargs to format the lines
I'm a bit unsure on how to improve this. The problem is that while inside a macro, all lines are recorded unmodified for parsing at a later time and the only thing that can stop a macro is the `@endmacro` directive. Since there's already code for handling directives that don't have control blocks I thought it was fine to handle this special case like this.

If you want, I can treat macros as a construct apart from directives. This should make the code more elegant but vroom would be more complex from the user POV.