Start on CommandRegistry
Perform synthetic bubbling through event target ancestors
Order multiple matching listeners by selector specificity
Handle .stopPropagation() being called on command events
Handle .stopImmediatePropagation() being called on command events
Allow listeners to be removed via a Disposable returned from ::add
Pass selector first to CommandRegistry::add
Allow multiple commands to be registered by passing an object
Allow CommandRegistry::rootNode to be assigned after construction
Assign atom.commands to a CommandRegistry instance
Allow CommandRegistry::rootNode to be reassigned
Move a few workspace commands to the command registry
:lipstick: group dispatch specs
Add CommandRegistry::findCommands
Clear atom.commands after each spec
Set the atom.commands root node to document.body in beforeEach
fixup! Clear atom.commands after each spec
Set root node to workspace view when it’s constructed

Makes it easier to deal with specs
Include commands registered via jQuery in CommandRegistry::findCommands
Upgrade command-palette to use `atom.commands` global