Read-only event loop processor

* Modify `ServerEngine` to ONLY do command processing
* Create `Event processor` which owns the `ServerState` and is responsible for updating client listeners.
* Communicate between `ServerEngine` and `ReadOnlyLoop` via atomic reference and explicit Queue interface.
* Modify startup to create both the EventLoop thread and the Command Prcoessing thread.

This has the nice side effect of allowing folks to register for StdOut/Log events in time to see boot messages of sbt.


Review by @havocp @pvlugter @skyluc