Removing mousetrap-global.js since it's now bundled in mousetrap plugins/mousetrap-global-bind.js
Override delegateEvents instead of initialize

The initialize() method of Backbone.View is a no-op that is meant to be
overridden without the need to call super. Using this plugin means that
every class that extends Backbone.View now has to invoke super in its
initialize, where it never did before.

Overriding delegateEvents/undelegateEvents rather than initialize/remove
fixes this annoyance, and also seems close to the spirit of those
methods (i.e., if you manually invoked undelegateEvents on a view, you'd
probably want it to undelegate keyboard events too.)

Add back the unbindKeyboardEvents on remove()

The undelegateEvents method doesn't get invoked on remove(), so we
actually need the hook in both places.
Use bindGlobal (if plugin exists), when using new 'mod' key
Don't let views remove other views' key bindings

This fixes the following bug:

1. View A binds 'x' to an event
2. View B binds 'x' to its own event, overwriting View A
3. View A unbinds all of its keyboard events (say, on remove())

In this case you would expect that View B would still have its event
binding, but it doesn't, because View A removes all bindings for 'x'.

This fix keeps track of which objects own which keys, and only unbinds
if another view hasn't already come along and stolen this event.

(Another way to fix this would be to allow multiple listeners for an
event, and simply remove an object from the list when it unbinds itself.
But the original semantics of Mousetrap are that there's only one
listener, and the last one to call bind overwrites any previous ones.)
Merge remote-tracking branch 'origin/master'