Added subtemplate support.

- New DataTemplate class.
- Changed DataValue ctor to take a const reference to std::string
  instead of by value.
- Added data_ptr ctor that takes a DataTemplate*.
- Added get() and isTemplate() methods to data_ptr.
- Added make_template() function to make a template from a string.
- Handling templates in parse_val().
- Changed TokenDef::gettext() to create a DataTemplate from the def
  statement's child tokens and set it in the specified key path.

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

- Comments can now be inserted in templates between {# #} brackets.
- Some very minor simplification of control statement handling code
  in tokenize().

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

- Described subtemplates and comment statements.

Signed-off-by: Chris Reed <flit@me.com>
Moved impl class definitions to source file.

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