Track all extension frames in ProcessManager, inspect extensionoptions

ProcessManager::GetRenderFrameHostsForExtension did not return all RFHs
for a given extension, because of two errors:

1. An extension can have multiple SiteInstances, so SiteInstances should
   not be compared by pointer.
2. ExtensionWebContentsObserver failed to register RFHs after a process
   swap.

I discovered this when I noticed that tests started to fail unexpectedly
after applying https://codereview.chromium.org/1413543005. That patch
changes the extension messaging API, to route messages to RFHs instead
of processes. This requires extension frames to be tracked correctly...

Extension tabs, frames, etc. are now visible at "Inspect views" in the
extensions view (when developer mode is enabled), thanks to the fact
that all extension frames are now being tracked (excluding extension
frames that are hosted in a view without classification, e.g. developer
tools and most of the GuestViews).

BUG=432875,550022
CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_site_isolation
TEST=ExtensionApiTest.MessagingNoBackground does not fail any more with
https://codereview.chromium.org/1413543005 after applying this patch.
DeveloperPrivateApiTest.InspectEmbeddedOptionsPage passes.
ProcessManagerBrowserTest.NoBackgroundPage passes.
ProcessManagerBrowserTest.FrameClassification passes with and without
OOPIF.

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

Cr-Commit-Position: refs/heads/master@{#363368}
19 files changed