expose keys to outside customization
working editor for hotkeys, though it's only temporary (no
persistence) and there's no way to add hotkeys yet.  there's also no
support for non-built-in functions -- if an extension customizes a
hotkey to a function, and the user then edits hotkeys, it will trample
that function.
checking for wrong event name in addon-options-hidden
add loading and saving of keybindings and restoring default settings
allow changing of existing keys, and adding new ones.  key
customization should now be complete!
mostly cosmetic changes, removing unneeded reportError statements,
adding comments, and such
fix bug where state variable wasn't numeric, but was being used as such
remove unneeded reportError
prevent concurrent editing of preferences in two windows (not quite as
smooth as it should be; we should allow concurrent editing and just
synchronize the behavior)
inverted the sense of the test...
rearranged the module into PrefEditors (that create, modify or delete
binding objects), Listeners (for handling all the events) and
Templates (for constructing the elements of the editor)
Merge pull request #676 from blerner/custom-keys

Custom keys