Added tokInput and token.input references.

Input can come from source code, macros defined on the command line, and synthesized tokens. So every token needs to know what its source is, which is what the start/end positions refer to.
Fixed: lastTokType was not always set to _eol, which caused subsequent preprocessor directives to fail.
New: added support for #undef.

This necessitated a change to macro lookup. Previously I was caching a token's macro reference, which doesn't work when the macro it referred to is #undef'ed.