Bold / Italic / Strike / Underline buttons don't work correctly
* Fixes #19
* Problem: addRange or removeAllRanges kills the browser command states.
* Store cache in commandCache
* Add updateCommandCache and restoreCommandCache methods
* Add support for command-with-arg buttons to be in an active state
* Update command cache when running execCommand
* Store and then update selected commands when selecting a toolbar button
* Create the command cache by looking up the buttons that are in the DOM, set the default value to false
Cleanup `split` with a `slice`
Fix hotkey support, add event namespaces, add hotkey enable callback
* Map multiple hotkeys in a string into single hotkey commands
* Store them in a hash
* When buttons are pressed (`keydown`), compute a string to match them on
* They must match this format:
  * Keys must come in order of modifiers as shown below:
  * <CTRL>+(<SHIFT>+)<KEY> `(shift optional)`
  * <META>+(<SHIFT>+)<KEY>
  * <ALT>+(<SHIFT>+)<KEY>
  * <SHIFT>+<KEY>
  * <KEY> `(i.e. tab)`
* Change `bindHotKeys` to only bind single events for `keydown` and `keyup`
* Re-map the keys into a hash as mentioned above
* Prevent propagation and default if we match a command we're allowed
* Add callback option to test a hotkey to see if it's allowed.
* Add `namsepaceEvents` helper, to create all events with a namespace
* Add default callback for `hotKeyEnabledCallback`
  * returns `true` if a hotkey can execute  browser command
  * takes parameter `command`. i.e. `bold`
Merge pull request #1 from drc-devs/bug/Better_hotkey_and_event_support

Bug/better hotkey and event support