Refactor key handling and selection.

- Pull key handling code out of the MultiSelectManager.

- Tighten up the semantics around range selection:
  - Create an API on MultiSelectManager for handling multi-select.
  - Make the range selection more opinionated (e.g. more state checks),
    to simplify the design and code.

BUG=25195767

Change-Id: I4bbe446ed3059150499db3d28e581b2e68405266
8 files changed