Expose Spatial Navigation state to the browser.

This change exposes the necessary bits of spat nav state for
implementing basic controlling logic in the browser, or indicating what
functionality is available.

This change also ensures the Spatial Navigation controller is
initialized before receiving a directional key so that the browser has
the correct initial state, and sites that focus elements that intercept
directional keys don't prevent spat nav from initializing or breaking
out of that focused element with the exit key.

Bug: 938534, 951544
Change-Id: I27fd9832d72f8d2d820a9b75c54f3861a4d34da2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1562714
Commit-Queue: Michael Thiessen <mthiesse@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: David Bokan <bokan@chromium.org>
Reviewed-by: Yaron Friedman <yfriedman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#654342}
42 files changed