Modify parser and AST to keep track of macro sources

This is useful when doing stuff with MacroDefinition