Share field trial allocator on zygote-using Linuxes

This passes a read-only handle to the field trial allocator on
Linux (that is, on POSIX machines that use the zygote model). It works
in the following way: in child_process_launcher.cc, we add our handle
to shared memory, which is a file descriptor (since shared memory is
really just an unnamed file), to files_to_register. The fds in this
mapping get remapped in the zygote process, and then all child
processes fork off the zygote, so the fds are the same in the child as
in the zygote. When we spawn a new process, then, we add our fd as a
switch on the command line (--field-trial-handle). Then, in the child
process, we must grab this fd and read from it. But first, we
have to get the correct fd using GlobalDescriptors, which is a
singleton that maps from the browser process's fd (key which we have)
to the remapped fd on the zygote (actual fd containing shared memory).
So we use that to look it up and then read from shared memory as
usual.

BUG=663914

Review-Url: https://codereview.chromium.org/2530573002
Cr-Commit-Position: refs/heads/master@{#435284}
8 files changed