Support for assertions and singleton checks

This pull request adds two features to REEF:

**(1) Support for assertions**

We now propagate the assertion state (enabled / disabled) from one JVM to another.

 * Used it in `JavaLaunchCommandBuilder` to propagate the assertions to subprocesses. Also added code there to allow users to override this automatism.
 * Added `EnvironmentUtils.areAssertionsEnabled()`
 * Added a log statement to `Launcher` about the assertion state

**(2) Support for singleton checks**
 * Added the helper class `SingletonAsserter` that allows checking for the singleton property of a class. Also added a test for it
 * Added an assert to make sure Evaluators is a singleton
minor refactoring of the assertion logic
cosmetic fixes to the code in REEF Launcher
Merge pull request #831 from Microsoft-CISL/sergiym_launcher_refactor

cosmetic fixes to the code in REEF Launcher
Merge branch 'master' into sergiym_close_eval

Conflicts:
	reef-common/src/main/java/com/microsoft/reef/runtime/common/driver/evaluator/Evaluators.java