Fixes and improvements

- Documented new features.
- Made make_template() function inline.
- Reordered TokenType enums for better grouping. Also added ELIF and
  ELSE token types for future use.
- Fixed TemplateException ctor that was not saving the message string.
- Replaced sequence of if/else if statements in get_keyword_token() with
  a keyword table and search loop.
- Changed get_var_value() to return an empty string on invalid key.
- Removed unnecessary TokenIterator::get() calls from
  ExprParser::parse_var() and NodeDef ctor.
- Fixed 'not' expressions that were inverted.
- Wrapped tokenize() in an exception handler to add the line number to
  TemplateExceptions that don't have it set.
- Changed tokenize() to search for '%}' and '#}' for close statement and
  close comment blocks, respectively.
- An exception will be thrown from tokenize() if a statement block is
  not closed.

Signed-off-by: Chris Reed <flit@me.com>