Extend keymaster to support dispatching
key events to elements. Overload key() to include
key(descriptor, view, element) where descriptor is the same
as the shortcut definition version, view is the dispatch view (defaults
to 'window'), element is the dispatch target.
Add selftest.html, modified from test.html to issue console.warn
for passing tests and console.error for failures
Make unbind more consistent with `key`

Previously, the `key` function and `unbind` function were assymetrical
so the following ignored the clear meaning intended:

    key('a, b', function() { alert("You Hit A or B!") });
    # User Interaction...
    key.unbind('a, b')

Only `a` was unbound.

The code was almost 100% there; I just mirrored the behavior I saw in
the `assignKeys` function.

The code is tested (failing tests were produced first).
Merge remote-tracking branch 'remotes/Crisfole/master' - just to mark this one as incorporated; already handled in the same way in commit SHA-1: cef3f4db502eaa776e34c6b6969b88c970b0370b; handy to have these additional testcases too.

Conflicts:
	keymaster.js
Merge remote-tracking branch 'remotes/johnjbarton/keyEventDispatch'

Conflicts:
	keymaster.js