11: Refactor ITemplate and subclasses
Splitted RootTemplate from other templates
11: Refactor ITemplate and subclasses
Reduced visibility of RootTemplate
4: Support references

Added TemplateRegistry to register templates according to their ID. Not
yet finished. Commit is used to transfer to another machine.