Change BuildValue to just be a JsValue plus a toString representation

We were jumping through all kinds of wacky hoops to put a T in there
for no real reason.

Still to do:
 - get rid of DynamicSerialization on client side
 - remove type parameters from ValueChanged and TaskResult
Move DynamicSerialization from protocol to server, remove from client

DynamicSerialization is now an implementation detail of the server
and no longer in any API.

Client has no reason to be dynamic since BuildValue now just has
a JsValue in it.
Remove now-pointless type params from ValueChanged and TaskResult
Remove separate "message" from TaskFailure, only have exception

sbt does have a separate message and cause exception in Inc,
but I think nobody knows what to do with that on client side
anyhow, so let's make the server put the useful thing(s) in the
exception message.
Merge pull request #220 from sbt/wip/havocp-build-value

Simplify watch/ValueChanged/BuildValue