Calculate main frame document intersections for frames.

This change calculates main frame document intersections by adding
new intersection observer state for parent main frame intersections,
propagated down the frame tree in ViewportIntersectionState. It adds
new behavior to bypass clipping to the main frame's viewport when
calculating a frame's intersection with the main frame, enabled by a
new visual rect flag kDontApplyMainFrameOverflowClip.

This is a precursor to two changes:
1. Propagating main frame intersections from render frame observers
through page load metrics to the browser process.
2. Measurement of ad density within the main frame with each ad frames
main frame intersection.

BUG=993453

Change-Id: I7cdc790c6c2ee1047abb397fa3dc55a4c72b8c97
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1968388
Reviewed-by: Ken Buchanan <kenrb@chromium.org>
Reviewed-by: Philip Rogers <pdr@chromium.org>
Reviewed-by: Stefan Zager <szager@chromium.org>
Commit-Queue: Justin Miron <justinmiron@google.com>
Cr-Commit-Position: refs/heads/master@{#727464}
14 files changed