Refactor and enhance KeyNav.

- Efficient implementation of _getNext(), so subclasses don't need to implement it.
- _getFirst(), _getLast(), _getNavigableChildren() removed.
- Removed dojo/on and dojo/query dependencies by using this.on(), and manually implementing
   the focusin event delegation.

Migration notes:

- Subclasses should stop defining or _getNext(), _getFirst(), and _getLast(), and should stop referencing
  _getFirst() and _getLast().
  In particular, their implementations of _getNext() may not work anymore; there are new requirements
  that it take a dir parameter, and also that that instance._getNext(instance, 1) gets the first child,
  and instance._getNext(instance, -1) returns the last.
- Be sure to define childSelector.  It was always required, but now may be even "more necessary"
  than before.