Macro rewrite WIP.

I'm working towards modifying the Macro interface so that arbitrary data
can be passed through in order to allow the meta-macro to work without a
complicated workaround.
Got import test working again.
WIP updated aggregate implementation.

Nearly done - should only need to add new macros for __init__ etc.,
and Macro implementation for struct members. Currently I think it
crashes because it is finding the term evaluation default
implementation and trying to use that to generate a struct member.
WIP updated aggregate implementation.

Required macros (__init__ etc.) have been created but there are circular
dependencies in lifecycle function generation.
Constructor tests working with new syntax.