Add a "focusless" mode to spatial navigation

This CL adds a mode to spatial navigation so that navigating around the
page doesn't change focus.

Today, spatial navigation moves focus from element-to-element. This is
problematic on some pages since key events are sent to focused elements.
If an element calls preventDefault() on arrow key events, spatial
navigation becomes trapped. It also means users can't interact with
elements that user the arrow keys (e.g. range slider).

With this feature enabled, the spatial navigation controller keeps
track of the "interested" element. This is the element that's currently
highlighted by spatial navigation (i.e. the prevoiusly focused element).
As we navigate around the page, the controller changes this interested
element rather than changing focus.

In a future patch, we'll allow focusing and blurring the interested
element using other keyboard buttons.

Bug: 919158
Change-Id: I14b432a1a4b7b4762db692842fa196caa92ec7f4
Reviewed-on: https://chromium-review.googlesource.com/c/1408350
Reviewed-by: Emil A Eklund <eae@chromium.org>
Commit-Queue: David Bokan <bokan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#624254}
13 files changed