Hook up guest browser plugins to the accessibility tree.

This change refactors the existing support for cross-process iframe
accessibility and extends it to make guest browser plugins, for example
the <webview> element in apps, accessible too.

In this change, a new class, FrameAccessibility, manages all links
from one frame's accessibility tree to either a child iframe's tree,
or a guest web contents' tree. This is cleaner than storing ids in
BrowserAccessibility nodes - now the accessibility tree just needs a
single bit indicating which nodes in one tree are acting as a host of
another tree.

FrameAccessibility doesn't try to be efficient yet, it scans its list
for every operation - the goal is for it to be simple and safe first.
Hash maps could make it much faster later if needed.

None of the APIs needed to test this are available outside of content
yet. Once http://crbug.com/396137 is finished we'll have a clean way
to test this. In the meantime, this can be tested by visiting
chrome://accessibility on Windows or Mac, and observing that the
accessibility tree for an app includes all nodes within <webview>
elements now. Also tested with VoiceOver on Mac; there are some bugs
but the <webview> is definitely part of the accessibility tree now.


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

Cr-Commit-Position: refs/heads/master@{#294883}
23 files changed