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`