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._
Not sure I'm using existentials correctly, but in my attempt they also seem to result in DynamicConversion doing the cast on behalf of the caller, i.e. the caller silently gets any type it cares to pretend it will get.

I also tried making RegisteredConversion public and returning `RegisteredConversion[F, _]` instead of the pair, which helps in a certain way (it connects T and Manifest[T] without requiring the caller to specify the T), but it ultimately just moves the cast around. Basically everything I'm trying is just moving the cast around.

I think the main safety here is that register() is supposed to keep you from mismatching T and Manifest[T].