Upgrade our build to 0.13.6-M2

This is so we build the plugin against latest sbt
AutoPlugin-ify ui-interface and prototype BackgroundJob feature

This is very rough and incomplete, but trying to sketch out
how to make a backgroundRun task work with ability to monitor
the status of background tasks.
Move background thread machinery into BackgroundJobManager

This allows us to lifecycle-manage a hypothetical thread pool which
we are about to add.
Do not setDaemon on background threads to avoid interrupt

The TrapExit stuff in the sbt runner only blocks on non-daemon
threads and then interrupts any leftover daemon threads; this
appears to be done globally (i.e. it doesn't matter who started
those threads or where). So we just can't use daemon threads
inside sbt apparently. In any case, avoiding setDaemon seems
to work.
Rework background jobs to use an executor with ThreadFactory

Originally did this to try to create threads outside of
task execution to see if that kept the runner from
killing my daemon threads. It didn't solve that problem,
but it's probably nicer to use a thread pool instead of
making ad hoc threads anyway, so will keep this.
Rearrange AbstractBackgroundJobManager to let subtypes deal with events

Subtypes need the job ID before creating the context and then
the subtypes have hooks they can send events in.
Fix warning about catching "_"
Move AbstractBackgroundJobManager from plugin to interface

This makes it available to sbt.server
Add BackgroundJob-related events, and server JobManager

Not yet sending the job started/finished events, because
we need to rearrange something to be able to get the
execution ID that generates the background job.
Remove global mutable serializer registry

This is the logical extension of earlier work to always pass the
Writes around (and to pass only Writes, not the whole Format).

With those earlier cleanups it isn't such a big deal to pass
the serialization registry around where it's needed too.
Merge remote-tracking branch 'origin/master' into wip/havocp-remove-serialization-registry

Conflicts:
	client/src/main/scala/com/typesafe/sbtrc/client/SimpleClient.scala
	commons/protocol/src/main/scala/sbt/protocol/WireProtocol.scala
	commons/protocol/src/test/scala/ProtocolTest.scala

This merge includes the SbtClient/SbtChannel split, and is broken because
we don't yet pass the serializations from SbtClient to SbtChannel.
However in this merge it compiles though doesn't work correctly.
Make SbtClient require serializations in the constructor

Otherwise there is a race where the serializations might not
be added before the event we need to deserialize.

If we need more serializations on the fly, a possible API
would be to allow providing a deserializer to watch().
We could use that deserializer to rewrite events from
ValueChanged[JsValue] to ValueChanged[T] when invoking the
watch() handler. But not in this commit for now.
Simplify the DynamicSerialization types

Since SbtClient no longer needs a mutable one, just use
DynamicSerialization as the only public type, and implement
the trait with a private final case class.
split UIContext into SendEventService and InteractionService

Trying to avoid a big collection of unrelated methods.
Merge pull request #186 from sbt/wip/havocp-split-uicontext

split UIContext into SendEventService and InteractionService
Merge remote-tracking branch 'origin/master' into wip/havocp-remove-serialization-registry

Conflicts:
	server/src/main/scala/sbt/server/UIShim.scala
Merge pull request #185 from sbt/wip/havocp-remove-serialization-registry

Remove global mutable serializer registry
Merge remote-tracking branch 'origin/master' into wip/havocp-background-jobs

Conflicts:
	commons/protocol/src/main/scala/sbt/protocol/WireProtocol.scala
	commons/protocol/src/main/scala/sbt/protocol/package.scala
	commons/protocol/src/test/scala/ProtocolTest.scala
	project/build.properties
	server/src/main/scala/sbt/server/UIShim.scala
	ui-interface/src/main/scala/sbt/Plugin.scala