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