Added semantic naming, added set base template path method, added chaining support, added unit tests
merged in original source files, added setVariablesFromTemplates() convenience method