Move middle-click autoscroll to synthetic fling.

Middle-click autoscroll is the Windows feature where after clicking
middle mouse button, the page then scrolls at a velocity depending
on the distance of the mouse cursor from the start point.  It's
one of the few remaining scroll modalities still doing scroller latching
and animation entirely on the Blink main thread.  This patch moves
it to the standard fling animation codepaths, allowing these scrolls
to run on the compositor thread.

Notes:
- Middle-click autoscroll comes in "holding" and "toggle" modes.  This
was implicit in the previous "CanStop" logic: I refactored it into a
more explicit state machine.
- Device-scale-factor correctness seems to have regressed with the
"page zoom for DSF" refactor.  Middle-click autoscroll velocity became
faster and deadzone smaller on higher-DPI.  I brought back DPI normalization.
- I didn't match the exact previous velocity curve as the formula is
quite strange as well as framerate-dependent.  I tweaked values on a
simple exponentiation formula until I found something that felt
similar on DPI=1 and 60fps at high speed, and with more range than before
at low speeds.
- This type of fling is frequently zero-velocity without actually ending
(i.e. preserving the scroller latching), when the mouse cursor is within
the deadzone.  Thus FlingStart([0,0]) events are legal and expected.
- As a next step, I plan to move selection autoscroll and
drag-and-drop autoscroll to the same mechanism.  Then stuff like
autoscroll_layout_object_ and ScheduleMainThreadAnimation will be deleted
entirely.

TEST=fast/events/middleClickAutoscroll-*
BUG=727964

Review-Url: https://codereview.chromium.org/2918053002
Cr-Commit-Position: refs/heads/master@{#479931}
29 files changed