Cellnav rewrite and speed improvements

This is a large set of changes that focuses on reverting how we track elements within the the grid's row repeater.  For the cellNav feature we changed to tracking by row.uid, which was causing us to recycle DOM elements at a very quick pace, resulting in thrashing the browser.

Going back to `track by $index` required rewriting the cellNav feature so that it no longer relies on "true" browser `focus`. but fakes it handling click events and tracking the history of how we navigate cells. These changes to cellNav ALSO requires many changes inside the edit feature, as it was implicitly relying on `focus` as well. We still do depend on focused elements, but only in the sense that we need to have them capture keyboard events.

There are also several speed improvements and fixes that were discovered in the course of this change, e.g. watches that shouldn't have been firing, calculations running when they shouldn't have and causing race conditions, etc.