MetaTools module that makes writing macros that work on functions simpler

MetaTools can parse the AST of a function into a standard form `ParsedFunction` than can be manipulated and then output to AST again with `emit()`. This hides all the complexities of how functions can be represented in Julia's AST allowing you to just write the logic of your macro. Using this module I've reimplemented `@fixture` and implemented a new `@commutative` macro too.