Enables cancelling of tasks.

* Move TaskIdRecorder into its own file.
* Create TaskCancellationRegistry for server to register tasks and
  cancellation "notifications".
* Shim TaskCancellation hooks into the sbt build.
* Create cancellation request/response in the API
* Wire cancellation request/response into SbtClient.
* Add hooks to be able to cancel tasks *in* the ServerEngine queue
* Create unit tests for all of the above.
Fixing integration test to reflect current status of TaskQueue.
Migrate ServerWorkQueue into ReadOnly thread.

* WorkQueue only exposes 'take next' for the ServerEngine
* WorkQueue synchronizes/blocks on all work-queue related changes.
* WorkQueue notifies immediately upon mutation of state.
* Fix cancellation tests to reflect more sane ordering of events
* Remove ugly features from previous attempt.
Bump to public 0.13.5 and enable cancel flag assertions.
Minor doc + other fixes to cancel feature.
Actually remove things from the cancellation store.
More fixes.
Fix sbt version used in local repo for tests.
Merge pull request #112 from sbt/wip/cancelable-tasks

Enable cancelling tasks
Use a serialized executor to fix SimpleConnector close

We were depending on the order (open first, close second) but
throwing callbacks into the default Scala executor which does
not guarantee any order. Switch to a custom executor which
serializes everything. We can't just use same thread executor
because one of these callbacks joins the thread that would
run the callback.
When using CountDownLatch it's good to actually wait for it