Move MessagePipe(Dispatcher) (de)serialization from MessagePipeDispatcher to MessagePipe.

This is not the final destination for much of the code (though some of
the plumbing will remain in place). Serialization/deserialization is
Channel-specific, so that's where it'll end up (and in Channel-related
classes, like ChannelEndpoint and ChannelManager).

(It's a generally a layering violation for dispatchers to know very much
about the Channel. There are a few other lesser violations -- e.g.,
SharedBufferDispatcher's use of channel->platform_support() is dubious,
and a bad way to get to get at a PlatformSupport.)

R=yzshen@chromium.org

Review URL: https://codereview.chromium.org/721423002