Diagnostics merged

Added a diagnostics framework. The user can specify the diagnostics to be performed during the simulation. The UI specifies how it handles the data produced by the diagnostics methods.
In the case of the MainBatch UI the user needs to specify a directory where the output files should be saved. Otherwise the program will run without any output. This should be the second parameter! (the first one specifies the location of the settings file)

Check the comments for further details on the implementation.