Minor clean up in common.hpp.
Added a rudimentary "token" object implementation.

Also added a sample list of token types (the TT enumeration.)

I'm using a particular macro metaprogramming technique here. For example look at UPL_PRIVATE__TOKEN_TYPES macro. By itself, it doesn't do anything at all. However, if you pass it a proper "action" macro (e.g. TT_ENUM or TT_COUNT) it expands to whatever you want. This is a great way to avoid data duplication.
Wrote a lexer interface (and bare skeleton implementation.)