Transform

Creates a new Macro that allows you to define transformations from one thrift struct to another, where by default fields with the same name are copied from the source struct to the dst struct. It also allows for specifying functions to calculate the value for the specified dst field based on the src.

Example:
```
Macros.mkTransform[Types, SubTwo](
   ('intField,  (x: Types) => x.intField + 1),
    ('longField, (x: Types) => x.longField - 1)
)
```

I also did some tidy up to reduce the number of imports required in by maestro users.

Also deleted anything related to the Split macro since it isn't in use and has been superceded by the transform macro.
I tried playing with the field and at this stage I don't know how to do it, if it is even possible or how involved it would be. With the symbol I just pattern match on the actual code at the call site which includes a constant string, the symbol name, `'name ===> Symbol.apply("name")`. With the field the actual code at the call side is just a reference to a field `fields.IntField`. I could pattern match on that but I think that would be quite fickle what if someone did:
```
val dstField = fields.IntField,
val t = Macros.mkTransform((x, ...))`
```

Macros are quite fickle. You can't use them inside traits, abstract classes etc, which is quite a pain and so it is good to know when you are using a macro method. Also, they do magic in the background so it is good to know about that too.