Move viewport actions into an ApplyScroll callback.

This CL moves viewport related actions like top controls movement
and overscroll handling into an applyScroll callback. This callback
is installed on the root document's scrollingElement, or
the documentElement if scrollingElement is null.

Since scroll customization isn't enabled by default, this requires
enabling some of its machinery to run without enabling scroll
customization for web content. In addition, we're still scrolling
on non-scroll customization paths in EventHandler so this patch
explicitly checks if an element has an apply scroll callback and
branches into the scroll customization path in that case.

The rationale for this change is to bundle up all the viewport
actions in one place as a prerequisite for the non-document root
scrollers proposal. The followup to this will be to allow content
to somehow move the callback onto elements other than the
scrollingElement which will cause them to become the de factor
"root scroller".

BUG=505516

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

Cr-Commit-Position: refs/heads/master@{#387224}
15 files changed