Tie scroll anchoring adjustments to frame lifecycle instead of layout.

This applies suppressions to the entire animation frame, which lets us spec the
behavior without referring to layout passes.

ScrollAnchor::notifyBeforeLayout, formerly known as save(), adds the scroller to
a queue owned by the FrameView, which iterates the queue to do the scroll
adjustments after layout, but before the compositing update.

Web APIs that force synchronous layout also force these adjustments to happen
synchronously.  This means it is impossible for script to observe an un-adjusted
scroll position after an anchor node movement.

BUG=648780
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2

Review-Url: https://codereview.chromium.org/2404393003
Cr-Commit-Position: refs/heads/master@{#428155}
11 files changed