Several Site Details / Memory metrics fixes

 - Fix possible O(n^4) worst case behavior (processes x widgets x
   frames x siteinstances) for stats gathering.

 - Show subframe-only processes in about:memory, which also causes them to
   be reported in SiteIsolation.CurrentRendererProcessCount.

 - Because SiteIsolation.CurrentRendererProcessCount is fixed, we need
   a new family of metrics, SiteIsolation.IsolateNothing*, which simulates
   the process-per-siteinstance process model. In tests, IsolateNothing
   is expected to have the value that CurrentRenderProcessCount used to.

 - Implement a more correct treatment of site isolation stats, which looks at
   parent/child transitions and handles ProcessPerSite properly. This is
   required for IsolateNothing to work correctly. Since options for
   walking the frame tree outside of content are pretty limited, this uses
   WebContents::ForEachFrame and (!) memoization.

 - Eliminate WebContents::GetSitesInTab; move its about:blank logic into
   the new frametree walking code in SiteDetails, which was the only caller.

BUG=454526,542909
TEST=browser_tests

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

Cr-Commit-Position: refs/heads/master@{#357178}
8 files changed