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._
`Option[(_, Manifest[_])]` is asking for evil issues.    What you really want, I think:


`Option[(T, Manifest[T])] forSome { type T }`.  @adriaanm could probably verify it's a legit usage of existentials.

What I've done in the past, is keep it "let polymoprhic"? and say:

`def convert[F, T](value: F)(implicit mf: Manifest[F]): Option[(T, Manifest[T])]`

You can then push the existential types down another layer, which generally leads to a bit smoother sailing in casting.