Add registeredProtocolConversions setting to convert values prior to ser...

...ialization

This allows us to go from sbt's internal type to a type to be sent over the wire.

sbt's internal type is generally of interest only to the server side, not the
client side. Client doesn't have sbt itself on the classpath, only the
sbt client jar and sbt.protocol._
Rather than this entire mechanism, why not something like:

```scala
def convertingWrites[F,T](convert: F => T)(implicit w: Writes[T]) = 
  new Writes[F] { 
    def write(thing: F) = w.write(convert[F, T](thing)) 
  }
```