Base classes for templates.
Templates are pieces of information that may be processed to array of bytes or Strings using defined map of keys and values.
Desing note: it's expected that processing of templates will not
generate exceptions hence Tempate.writeTo(OutputStream)
and StringTemplate.writeTo(java.io.Writer) declare only IOException
as checked excpetion.
If null is supplied as value for existing, previously defined key (using Template.setValue(java.lang.String, java.lang.Object), it should be implemented as remove of given key from template.