Massive refactoring, intermediate commit. The code in this commit does not work properly.

Changes so far:
Type classes have been split into CompiledType and RuntimeType classes, which elminates a few edge cases with templates using other template types.
The BoxingUtil has been cleaned up. Most of the functionality is now directly implemented by Type and the Boxing/Unboxing nodes.
General parameters are template fields now instead of being passed via a model. This simplifies the template/closure interaction among other things.
"Direct" fragment methods are now compiled, which can be called without a model. This is supposed to be used internally to improve performance,
but could also be used by pre-compiled custom template interfaces in the future. Non-trivial constructors are compiled as well, to go along with the new fields.
Fields of the template or closure can now be passed as variables and the VariableExpression node takes care of the correct loading of both variants.
Environment's API has been changed because of the new uniqueness of Template instances. A TemplateFactory can be obtained to create Templates of the same type
with different general parameters.