Allow headless TabSocket in isolated worlds & remove obsolete logic

This patch only affects C++ Embedders of headless_lib and should have
no effect on normal chrome even with the --headless flag.

Recently we decided to no longer allow arbitrary mojo bindings, instead
relying on the headless::TabSocket API for js<-->C++ communications.

The public headless API for registering a mojo module has already been
removed and this patch finishes the job by removing the code from
MojoBindingsController which injected js mojo bindings for
BINDINGS_POLICY_HEADLESS.

In this patch we are replacing BINDINGS_POLICY_HEADLESS with
BINDINGS_POLICY_HEADLESS_MAIN_WORLD and
BINDINGS_POLICY_HEADLESS_ISOLATED_WORLD which provide access to the
headless::TabSocket API to either the main world or for isolated worlds
created by the Page.CreateIsolatedWorld DevTools command.

For a security point of view this patch hopefully reduces the attack
surface for the main world because js now only has access to the
headless::TabSocket API rather than arbitrary mojo modules.  Providing
the headless::TabSocket API into isolated worlds is new but hopefully
non-controversial. I note that ContentScripts have access to similar
APIs for communication with the owning extension. I did investigate
reusing that code but it didn't seem feasible.

BUG=546953

Review-Url: https://codereview.chromium.org/2873283002
Cr-Original-Commit-Position: refs/heads/master@{#474238}
Committed: https://chromium.googlesource.com/chromium/src/+/07ee7c399295b210c5338dfeb543f2d30f748340
Review-Url: https://codereview.chromium.org/2873283002
Cr-Commit-Position: refs/heads/master@{#474311}
19 files changed