Changed registerPush and unregisterPush to public.

Modules were not able to register for pushes, because the methods to do so where out of scope.
Added nullity checks for foreach-loops where needed

foreach-loops over modules was omitted from this, because it is created by the static constructor
Added InvalidConfigurationException
Fixed possible error where a misconfigured config.yaml cause the program not to recognize that no modules are configured to be loaded.
Added boolean-parameter to reportError.

The new parameter controls wether this error should stop the program or not.
Also changed a call to reportError in init to an Exception, because at the method is run by mainThread and no modules are loaded at this point.
Merge branch 'fix0' modified reportError so that without a second argument it does not stop the program. it only does this if the second argument is true.