Makes MacroSupport more generic.

Creates an old version of MacroSupport for the pre execution
stuff. Then creates a new version of Macro support that provides
implicit views for thrift structs.