Improved Local Runtime

This PR contains a lot of changes which happened as part of adding more events to the local runtime. It now generates events when a process exits, therey mimicking the YARN runtime closer:

  * Moved `RunnableProcess` to its own package and added event handling
  * Used that to inform the Driver of evaluator state changes such as process exit. For exit values different from 0, a failure is generated
  * Added a test to check whether untimely calls to `System.exit` in a Task create a `FailedEvaluator` in the Driver
  * Added new interface `EvaluatorRepresenter` and moved the old `EvaluatorManager` to be an implementation thereof
  * Added a pool of closed Evaluators to `Evaluators` (see #763 )

**New Driver Idle detection:**
  * Driver idle is determined in an event driven fashion: The clock, resourcemanager or Evaluators classes can initiate idle check and if all agree, the Driver is shut down

**Logging updates:**
  * Logging updates to `EvaluatorManager`
  * Log updates to `DriverIdleHandler`
  * Log update to `EvaluatorContext`
  * Added a final log entry in `Launcher`

**Minor tweaks:**
  * Fixed the job name of `HelloREEFHttp`
  * Removed some dead code in the close_eval test
  * Added a link to the Wake issue for the wait() calls in the Evaluator.
  * Fixed the name of the Test in `EvaluatorFailureTest`
  * Fixed synchronization issues in `EvaluatorFailureDuringAlarmDriver`
  * Added thread naming to `DispatchingEStage`
  * Tightened state checks in ContainerManager