Add initial hook to adapt server load failing for server.

For now, just always shuts down immediately.

cc> @havocp
handle kill server request without build state

Also rearrange the match statements in handle requests
to make it easier to see the cut-and-paste code and
the need to update both places.
Support UnlistenToEvents without a build state
Don't enter the main request loop until project loads

This way we always have a valid build before we start
to handle requests.
Handle completion request without state (by returning empty set)

Most UIs won't respond well to getting a big flood of completion
replies on project load.
Rearrange waiting-for-boot loop to drain all requests at once

This is pointless in this commit, but becomes useful if we
add code to handle failed project load.
When server load fails, log an error.

Just to be sure we see something.
Merge pull request #178 from sbt/wip/havocp-load-failure

Some improvements to how we handle load failure