Massive message structure refactoring.

* Remove the Params from UI in sbt.  All sbt plugins
  now just use Map[String,Any].
* All Request/Response/Event objects now support a
  RawStructure[T] class that can fragment them into
  a Map[String,Any]
* Moved `Envelope` into `WireProtocol.scala`.  Placed all
  serialization/deserialization logic of messages into him.
* Removed GenericREquest/GenericResponse.  All requests/responses
  have known types, but can have arbitrary attribtues if desired.
* Created GenericEvent so you can still send events via the
  ui.Context API (although this needs cleaned up).
* Moved existing shims to use pattern matching on direct types
  rather than magic strings.
* Got most things compiling
* Added serialziation tests for every message I could remember

Note:

* There are still message handling warnings here. Some messages are never
  serialized, but we should make sure they could be, probably.
* Integration tests do not pass.  This is so I can merge in @havocp's
  latest changes
* Refactoring is not complete.  There's still a lot of chaos in these APIs,
  in particular, confusion around how to serialize to JSON, and what types
  we should be passing around.  It's my intention that this mark the start
  of a FORMAL API which allows for generic events/messages to be sent.  We
  lock down on some structured meaning, albeit with some messages able to
  pass arbitrary information (see TaskResult and GenericMessage).

This probably needs to be reviewed soon by @skyluc or @havocp, but
for now, you may want to wait until the final result hits.