Improve dgrid focus event generation and tab stop handling

This update includes:
* Clicking on the same cell or row no longer caused focus out/in events to be generated.  
* Focusing on the header with cell navigation turned off works; events are generated.  
* The grid/list will now generate focus events when you use the tab key to move in or out of a grid. 
* The code also makes sure there is only one tab stop in the data rows or 2 total for the grid.  Before, the initial tab stop was not being removed.
* I made some changes to `List` and `Grid` to make a linter happier.
* I changed the closure for `this` from `grid` to `self` in `Keyboard`.  Using `grid` was hazardous because the tests create global variables named `grid` which cause some tests to kind of work when they shouldn't have.