Change the NodeToId map from a singleton to a per TreeManager object

This is used to support loading multiple versions of the same project
project at the same time. These will contain many nodes with the same
ids.
Allow creating an 'if' by surrounding existing statements with if{ }
Enable loading of models from memory and not only directly from disk

UNTESTED!
Fix a missing constructor definition
Add 2 freshly generated plugin skeletons for programming language export
Add a convenience class to execute custom cleanup function on scope exit
Add the initial (UNTESTED) code for the generic export functionality
Require non-null nodes when creating code fragments
Add convenience functions for appending fragments to a file
Fix Exporter to contain only static functions
Make Exporter create all directories on the path to the exported project
Add the first basic text for generic exporting
Add an extra test and split the functionality of FragmentLayouter
Add file/directory removal and existing file comparison tests
Add layouting tests and fix bugs
Test the export map functionality and improve the export API
Improve the API of the generic export
Ignore the exported directory in DebugBuild
Add a partial (skeleton only) implementation of Java exporting
Change the structure of exported java projects to have an 'src' folder