Refactor Keyboard to allow for extensible key mappings

This changeset adds `keyMap` and `headerKeyMap` to the Keyboard mixin, which are populated from `Keyboard.defaultKeyMap` and `Keyboard.defaultHeaderKeyMap` by default.  Additional key mappings can also be later added via the `addKeyHandler` method.

This changeset also fixes issues with header cells in Grid#cell, and
empty preload nodes in IE6.