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.
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
Apply Scalariform to Keys.scala
Fix exhaustiveness warning in terminal logging
Privatize "generic" BackgroundJob, export only "run in thread"

This gives us a bit more future flexibility.
Drop the jobStopBySpawningTask key

People can always search by spawning task by hand.
No need to add stuff we might not want.
move global backgroundRun-related settings to SbtBackgroundRunPlugin

Not sure why I had them in the UI plugin
Implement jobStop and jobWaitFor tasks in plugin
Use resolvedScoped to get the spawningTask instead of streams
Move CommandLineBackgroundJobManager to the BackgroundRun plugin file
Move the AbstractBackgroundJobManager code to the plugin

And make the server depend on the plugin to get that implementation.

This introduces AbstractBackgroundJobManager *and* BaseBackgroundJobManager
which is pretty ridiculous but will clean it up in another commit.
Move trait BackgroundJob to plugin and keys to UIKeys

trait BackgroundJob was part of the internal-only implementation.

Bundle all the keys in our plugin in UIKeys so they are ready to
paste over to sbt's Keys object.