Update some dependencies.
Clean up some of the JSON parsing code.

This commit makes some of the play-json parsing code a bit more idiomatic.
Mainly, this removes the usage of JsValue.as[T], which will throw exceptions
at runtime in unexpected ways, instead of bubbling up the JSON parsing error using
a JsResult.
Improve data contained in TestEvent messages.

This adds a duration field to the TestEvent message, and also improves
slightly on the way test names are reported. Previously, the qualified class
name for each test was reported, but not the actual name of the test itself.
Some more cleanup, and possibly slightly better test logging.

This commit cleans up the JSON code a bit more, most notably removing
the use of Symbol identifiers.

Additionally, I've attempted to enhance the test reporting bits - there's now
new TaskEvents that model the groupStarted and groupFinished methods in TestListener.
These events will have the same task ID as TestEvents for each individual test, so
it's a good first pass at associating events to suites. Unfortunately, this doesn't
work perfectly with all of the test backends. Notably, the SBT reporter in Specs2 doesn't
send over a meaningful Selector with events - by default, it just sends over a selector for
the whole suite, which means there's really no way to associate a meaningful name for
test events produced by Specs2. This is a defect in Specs itself, so there's not much
to be done. It looks like the JUnit and ScalaTest reporters do the right thing with
selectors (and durations), and ScalaCheck is moderately acceptable as well.
Remove superfluous comment.
Merge pull request #187 from dpratt/json-fixes

Various improvements to the JSON code and test reporting bits
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.
Purify BackgroundJobHandle trait (remove toString implementation)
Purify BackgroundJobManager by removing unused convenience methods

We don't want any implementation in these interface traits.
Rename BackgroundJobManager to BackgroundJobService

We are trying to be consistent here!
Move trait BackgroundJobService into UI.scala and seal it
add TODO about not using tasks/settings for services

We want to introduce a separate facility that allows them to
have lifecycle management.
Seal BackgroundJobHandle so only sbt can extend it
Rename BaseBackgroundJobService to AbstractBackgroundJobService

This is now more what people would expect.