Major overhaul of statement processing.

- Using an entirely new lexer and recursive descent parser for all
  control statements. Syntax is now rigorously checked.
- New StatementToken, StmtTokenIterator, and ExprParser classes.
- Token classes have been changed to take a vector of stmt tokens
  instead of strings.
- Def statements accept a list of params on the subtemplate variable
  name, though the params are currently unused.
- Params can also be specified when a subtemplate is used in a variable
  substitution, again currently ignored except for parsing.
- Much better boolean expression support. "and" and "or" are now handled,
  and subexpressions may be parenthesized. "true" and "false" are now
  handled as constants. "not" works as before, but it any subexpression.
  Subtemplates may be used in expressions. Expressions may also be used
  in variable substitution as well as if statements.
- The "defined" pseudo-function is currently broken (it always returns
  true).
- TokenEnd is passed the token type that was determined by tokenization.
- Removed unused gettext() function.
- cpptempl currently prints warnings when invalid key paths are used.
  This will probably be made a compile time debug option.