Fix case where accessible scrollToMakeVisible didn't work.

The particular broken case is when the object to be made visible is inside of
a scrollable container that's larger than the viewport (window).

Previously, the code scrolled the object to be visible within the container,
then recursively scrolled the container to be visible within the viewport.
That doesn't necessarily work if the container is larger than the viewport.
Now it passes the coordinates of the original object up recursively as the
"subfocus".

In addition, this change centers the object within the viewport, rather than
scrolling minimally to get it in view. This more closely matches how the
browser normally behaves when you focus something offscreen, and makes for
a better experience on Android, where we use this function extensively
every time you move accessibility focus.

Well-covered by existing tests, plus a new test for the case that didn't
previously work.

BUG=374316,424691

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

git-svn-id: svn://svn.chromium.org/blink/trunk@183926 bbb929c8-8fbe-4397-9dbb-9b2b20218538