Bug 980410 - Implementation of toolbox panel

Note that dev/volcan.js has being reviewed by @dcamp separately form this, so feel free to ignore it.
More comments on this file in `sdk/events/utils` comments.

Why is this it's own file called "when"? That's not clear at all, and these are promise-based events, so why not in `sdk/dom/events`?