sbt version update
Merge pull request #177 from sbt/wip/sbt-version-update

sbt version update
Merge pull request #178 from sbt/wip/havocp-load-failure

Some improvements to how we handle load failure
Merge pull request #179 from sbt/wip/havocp-server-state

Split RequestListeners apart from ServerState
Merge pull request #180 from sbt/wip/havocp-lifecycle

Robustness: logging and clean exit/reboot
Split SbtClient into a raw SbtChannel and the current SbtClient

SbtChannel is just the basic connection; it doesn't cache stuff
or track state. Just one level above ipc.Client, it does
the initial registration and lets you use callbacks instead of
threads if you want.

Not in this commit, but implied by it, is an API break where
SbtConnector will give you the channel only, and then you
do SbtClient(channel) if you want the client.

Also implied by this is a future path where we make SbtClient
track even more state.

The general idea is that we can make SbtClient its true self
(very convenient, but perhaps a little bit heavy), while
also making SbtChannel its true self (just the raw protocol).
Keeps the code a little tidier too since there are now fewer
low-level socket concerns in SbtClient.
Fix a deprecation warning in RequestLifeCycle.scala
Remove dedicated thread from SimpleClient

The thread in SimpleChannel is good enough, nothing is gained
by adding another one in between.
Implement SbtConnector in terms of channel not client

Now open(SbtClient => Unit) is a trivial convenience wrapper for
openChannel(SbtChannel => Unit), and subtypes of SbtConnector
just implement openChannel and don't need to mess with client.