Added support for macro definitions.
- Added a pre-processor callback to catch macro definitions
- Changed the type of the failure map so that macros and declarations can share the same map
- Added extra tests to ensure fix-ups work using the new map
- Added fix-ups for type aliases in variable and function declarations as part of adding the new tests