New: implemented token pasting (##) in preprocessor.

Also:
- Macro argument expansion/stringification is now performed lazily during body expansion.
- Factored macro expansion code into separate functions for better maintainability and so I can actually see what the logic is! No more using one giant function for the sake of saving a few nanoseconds!
- As per the gcc docs, argument substitution is done first, then a second pass does expansion.