Simplify Token Recognition

There were really only two jobs being done for parsing tokens. The first
was tokenizing a command string. The second was identifying the type of
an already extracted token.

When I was tokenizing command text I was being wasteful. Once I
extracted the text, I threw away the token type. Then I would go and get
the type again later on. I realized that I should create two token
source classes: a tokenizer that kept track of the token types and a
token type "imbuer" that added the token type while moving over an
existing stream of tokens. This sped up performance somewhat but, more
importantly, made the code much more simple.