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.