WebExtensions: Add commands API
This simplifies things a bit, removing a duplicated Command struct.
Fixes a handful of leaks.
Namespaces the Action name so its private-per-extension.
Adds strict accelerator parsing.
Ensures accels are added on load and removed on unload.
Edited by Patrick Griffis