Change console.log to console.warn
Optimized macro lookup a bit.
Oops, I got a little out of sync with some local changes
Fixed: self-referential short-circuiting was missing the first self-reference.

Previously I did not push the first macro invocation on the stack, which meant I missed that self-reference. Also, the way I was checking for self-references when expanding arguments wasn't quite right.

Now a macro is always pushed on the stack, and the lookupMacro is informed if the lookup is for an argument, in which case no self-reference check is done.

All of the rules and examples in the GCC docs, section 3 (Macros) are now done and validated.