Support InputMethodManager#updateCursorAnchorInfo for Android 5.0

This is the 6th part of the series of CLs to enable
InputMethodManager#updateCursorAnchorInfo support for Android 5.0.
- part1 crrev.com/671503005
- part2 crrev.com/679223002
- part3 crrev.com/755853004
- part4 crrev.com/784503002
- part5 crrev.com/757233003
It enables the feature under a flag, with one possible optimization
chance (dynamic subscription) not yet implemented.

This is based on yukawa@'s original CL (http://crrev.com/699333003),
and adds accommodation with recent changes on coordinate systems
in Chromium trunk. It also adds a few comments on coordinate systems
so that the intention of the code become clearer.

This CL consists of the following 3 parts,

1. Adds CursorAnchorInfoController as the central place to control
   when and how CursorAnchorInfo object should be built and sent to the IME.

2. Adds tests for CursorAnchorInfoController.

3. Modifies renderer_widget_host_view_android and ContentViewCore to
   wire necessary parameters to CursorAnchorInfoController.

Design Doc: https://docs.google.com/a/chromium.org/document/d/1KdnoynGURrJBP1vDHcv2jwUdnsXHzRSxb5v4rK7UgtU/view

BUG=424866
TEST=Manually done on Nexus 6 Build/MMB29S, Nexus 4 Build/LMY48T
TEST=build/android/test_runner.py instrumentation --release \
  --test-apk=ContentShellTest -f '*CursorAnchorInfoControllerTest*'
TEST=build/android/test_runner.py instrumentation --release \
  --test-apk=ContentShellTest -f '*ImeLollipopTest*'

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

Cr-Commit-Position: refs/heads/master@{#380504}
16 files changed