Provide ordered events to the Driver

This closes #882.

*Major changes*
  * `DispatchingEStage` now has a second constructor, which creates a new one that shares the thread pool and exception handler with the given one. That constructor is used in `EvaluatorMessageDispatcher`
  * Changed the order in `EvaluatorDispatcherThreads.dispatch()` to first send the event to services, then to the application
  * Changed the default on `EvaluatorDispatcherThreads`  to 1

*Minor code cleanups*
  * `DispatchingEStage` now uses the queueLength of the underlying `ThreadPoolStage`
  * Renamed `DispatchingEStage.dispatcher` to `DispatchingEStage.applicationDispatcher`
cosmetic fixes before merging into master
cosmetic fixes: remove redundant generic specializations in EvaluatorContext
Updated Evaluator Parameters

This PR is part of the ongoing work to move our named parameters from inner classes to top-level classes, which allows us to use the same parameters in the JVM and .NET implementation of REEF:

  * Moved all inner classes in `EvaluatorConfiguration`  to the package `com.microsoft.reef.runtime.common.evaluator.parameters`
  * Renamed `EvaluatorConfigurationModule` to `EvaluatorConfiguration` to bring it in line with the other uses of ConfigurationModules in REEF.
Merge pull request #884 from Microsoft-CISL/weimer_evaluator_parameters

Updated Evaluator Parameters
Introduction of TaskRepresenter

This closes #885

This PR is part of the longer term goal of rewriting the Driver code into smaller units. It introduces a new class `TaskRepresenter` which represents a running Task on the Driver. It is is responsible for taking action on Task status messages sent by an evaluator. It is in that capacity that #885 is addressed by ignoring repeated INIT messages from Tasks.

Also, this adds `TaskCountingTest`, which checks that we never hand a second `RunningTask` event to the user. As this test needs to run for a long time to trigger bad behavior, it is not part of the `AllTests` suite. Instead, I added a new test suite called `ProbabilisticTests` where we can collect those tests.
better logging when submitting a driver job to YARN; add common Hadoop
environment variables to classpath; other minor fixes
cosmetic fixes
Merge branch 'weimer_885'
Merge pull request #888 from Microsoft-CISL/sergiym_log_launch

better logging when submitting a driver job to YARN
Merge branch 'master' into sergiym_task_runtime_thread
move Thread object from TaskRuntime to ContextRuntime