Redo streams-to-logs conversion to catch ANSI codes always

We had two separate mechanisms, one for the sbt ConsoleOut thing,
and a different one for System.out / System.err. The System.out/err
one did not remove ANSI codes and wasn't very clever about trying
to get the log events on newline boundaries.

This patch centralizes all the stuff in ServerLogging.scala
and tries to share some more of the codepaths. This should
in theory get the ANSI codes out of stdout/err.
Merge pull request #219 from sbt/wip/havocp-ansi-codes

Redo streams-to-logs conversion to catch ANSI codes always
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
Re-exposed conversion functions
Really expose internals
Merge pull request #221 from sbt/wip/expose-internals

Wip/expose internals
starting one-way trip
tracking master change