Mojo: Create a PlatformChannel abstraction.

PlatformChannel abstracts the *creation* of a (bidirectional) "OS
pipe"/"channel", and will (soon) also provide a platform-independent way
of passing such a channel to a (new) child process.

It intentionally does not abstract away the *use* of such a channel,
which will still require using native primitives (via a native OS
handle, thinly wrapped by the existing PlatformChannelHandle).

Note that though channels are bidirectional and are functionally
symmetric, there are nonetheless "server" and "client" ends. This is to
accomodate setups where there is such a distinction at the OS level (and
in particular, setups where channels are named OS objects).

R=darin@chromium.org, darin

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@238141 0039d316-1c4b-4281-b951-d872f2087c98
SVN changes up to revision 238141