Don't send touchcancel on touch scroll start

This switches the default touch scrolling mode from 'touch cancel on scroll' to our new 'touch move absorption' behavior.  Briefly: touchmove events still aren't sent during active scrolling (for performance reasons), but will be sent when overscrolling.  See https://docs.google.com/a/chromium.org/document/d/1MGuCb0Lb7UfaDmH44bp9YKVG-CVfH6WtKTZl93BXwQw/edit# for details.

This exposes the touch scrolling mode in chrome://flags/#touch-scrolling-mode so that we can easily switch back to the old behavior for diagnostics purposes.  This will be removed after this has reached stable (crbug.com/350430).

Fixes a bug where (depending on timing) we could send one or more extra touchmove events at the start of a scroll sequence.  Now we start every scroll with moves being absorbed and switch to sending move events only after we've seen an unconsumed GestureScrollUpdate.

Fixes a bug where scrolling the top controls (Android) wouldn't mark the GestureScrollUpdate event as consumed.  Adds a unit test covering this and other basic parts of LayerTreeHostImpl's scrolling behavior with respect to top controls.

Updates some tests to support both the original "touchcancel" mode and the new "touchmove absorption" mode.  This way if we uncover problems after branch, we can simply flip the default mode (rather than reverting this entire CL).

BUG=346693
R=aelias@chromium.org, jdduke@chromium.org

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@255787 0039d316-1c4b-4281-b951-d872f2087c98
SVN changes up to revision 255787