Remove knowledge of MessagePipes from Channel.

Instead, on receiving an endpoint, Channel stores it temporarily as an
IncomingEndpoint (newly introduced). This can be claimed via
DeserializeEndpoint(), and then converted to a suitable MessagePipe.

Still to do: remove (the newly-renamed) PassIncomingEndpoint().

R=yzshen@chromium.org

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