Keyboard navigation for rowBasedSelection mode

Added Keyboard navigation for rowBasedSelection mode. (Using keyboard navigation and selection in a way that makes more sense when used with rowBasedSelection)
Yeah, there is a lot of code duplication here. I recommend having 'if self.options.rowBasedSelection' statements inside the main handleKeyDown method instead where needed. That way you can also have a little comment explaining why the keyboard navigation does something different for rowBasedSelection (ie. "When using rowBasedSelection, up/down keys change the selection of rows instead of moving the active cell.)