Remove the "row" attribute from the row nodes and search the rowsCache instead (make sure you're not relying on that attribute being there!).
Include cell node refs in rowsCache and refactor existing methods to use them.
Cleaned up a few unused variables.
Store the correct node reference in rowsCache.
Fixed headers sometimes getting out of sync when the grid is resized.
Added "scrollRowToTop()" and fixed bounds checking in "scrollRowIntoView()".
Merge remote-tracking branch 'origin/v2.0' into v2.0
Sped up getMaxSupportedCssHeight() by doing exponential testing instead of linear.
Small focus tweaks (#352).

Made SlickGrid less aggressive about grabbing focus.
Fix #374 by ignoring subsequent events on nodes that no longer exist.
Fix #377 - vertical bounds checking wasn't accounting for the scrollbar.
Extended the grid API with "onHeaderRendered" and "onBeforeHeaderDestroy" events and added a Slick.Plugin.HeaderButtons plugin to easily add custom buttons to column headers along with an example to demonstrate usage.
Merge remote-tracking branch 'origin/master'
Added a Slick.Plugin.HeaderMenu plugin to add drop-down menus to column headers along with an example to demonstrate usage.
Added "onHeaderMouseEnter" and "onHeaderMouseLeave" events for column headers.
Fix #382 - Not all plugins are unregistered on destroy.
Fix #380 - asyncPostProcess is fired too often when the array.prototype has been extended.
SlickGrid v2.1 - Implement virtual rendering for columns.
Changed to allow selecting multiple ranges per row
LongTextEditor should use args.grid
Fixed an error in example9 when using the grip to reorder rows, but drag'n'dropping it into the recycle bin.