Bug 984365 - Add addItemsByModule and removeItemsByModule; r=mratcliffe

BuiltinCommands.jsm was huge to avoid slowing things down by having many
modules loading To avoid splitting it up from slowing things down we
want to delay loading commands. These function allow us to add modules
at any time, which can be loaded by GCLI whenever is best.
Bug 984365 - Use the addItemsByModule API; r=mratcliffe

The previous commit added functions to do delayed loading. This converts
the various commands to actually use it.
Bug 984365 - Use addItemsByModule for loading "mozcmd" files; r=mratcliffe

There is an easy way for people to create commands, by pointing a pref
to a directory from which *.mozcmd files are read. This change uses
addItemsByModule for those files.
Bug 984365 - Pay back some technical debt; r=mratcliffe,panos,robcee

This change does the following:
* Adds "use strict" to modules that I'm touching where that does not
  break anything (i.e. not BuiltinCommands.jsm)
* Removes vim/emacs mode lines
* Uses const for imports that I'm touching
* Removes unused imports
* Prefers "require" to "devtools.require"
* Removes function names
* Uses fat arrows
* Removes "params: []" which isn't needed in a command
* Makes better use of the 'context' parameter that GCLI provides
  (generally using a better path to chromeWindow or similar)
Bug 984365 - Refactor the profiler commands; r=robcee

The profiler commands used a getPanel function that wasn't really
needed, and some of the output was creating DOM nodes directly which
isn't what we like, so this just simplifies things.
Bug 984365 - Convert CmdDebugger.jsm → debugger-commands.js; r=panos

This means we can kill many imports and a whole Makefile.in. The
changes to debugger-commands.js are:
* store the commands in exports.items rather than this.items
  to fit with how commands should be registered.
* use require paths for the SDK loader rather than JSM loader
Bug 984365 - Convert CmdEdit.jsm → styleeditor-commands.js; r=harth

The only changes to styleeditor-commands.js are:
* store the commands in exports.items rather than this.items
  to fit with how commands should be registered.
* use require paths for the SDK loader rather than JSM loader
Bug 984365 - Convert CmdInspect.jsm → inspector-commands.js; r=pbrosset

The only changes to inspector-commands.js are:
 * store the commands in exports.items rather than this.items
   to fit with how commands should be registered.
 * use require paths for the SDK loader rather than JSM loader
Bug 984365 - Convert CmdResize.jsm → resize-command.js; r=pbrosset

The only changes to resize-commands.js are:
 * store the commands in exports.items rather than this.items
   to fit with how commands should be registered.
 * use require paths for the SDK loader rather than JSM loader
Bug 984365 - Convert CmdTilt.jsm → tilt-commands.js; r=robcee

The only changes to tilt-commands.js are:
 * store the commands in exports.items rather than this.items
   to fit with how commands should be registered.
 * use require paths for the SDK loader rather than JSM loader
Bug 984365 - Convert CmdScratchpad.jsm → scratchpad-commands.js; r=robcee

The only changes to scratchpad-commands.js are:
* store the commands in exports.items rather than this.items
  to fit with how commands should be registered.
* use require paths for the SDK loader rather than JSM loader
* minor simplification to how we get at the Scratchpad object
Bug 984365 - Allow panels to register tools; r=mratcliffe

This also converts Commands.jsm -> commands-index.js, and setups up the
GCLI makefile in toolkit for where we are going to put the commands that we
split out of BuiltinCommands.jsm.
Bug 984365 - Split out 'splitconsole' command; r=robcee

Changes:
* Inlined the 'fireChange' function to keep things simple
* Be consistent in using " rather than ' where possible
* Convert from JSM style to JS style, which means:
  * Adjust require paths to fit with SDK loader conventions
  * Use exports.items rather than EXPORTED_SYMBOLS
Bug 984365 - Split out 'media' commands; r=mratcliffe

Changes:
* Be consistent in using " rather than ' where possible
* Convert from JSM style to JS style, which means:
  * Adjust require paths to fit with SDK loader conventions
  * Use exports.items rather than EXPORTED_SYMBOLS
Bug 984365 - Split out 'appcache' commands; r=mratcliffe

Changes:
* Be consistent in using " rather than ' where possible
* Convert from JSM style to JS style, which means:
  * Adjust require paths to fit with SDK loader conventions
  * Use exports.items rather than EXPORTED_SYMBOLS
Bug 984365 - Split out 'paintflashing' commands; r=mratcliffe

Changes:
* Be consistent in using " rather than ' where possible
* Convert from JSM style to JS style, which means:
  * Adjust require paths to fit with SDK loader conventions
  * Use exports.items rather than EXPORTED_SYMBOLS
Bug 984365 - Split out 'listen' command; r=panos

Changes:
* Be consistent in using " rather than ' where possible
* Convert from JSM style to JS style, which means:
  * Adjust require paths to fit with SDK loader conventions
  * Use exports.items rather than EXPORTED_SYMBOLS
Bug 984365 - Split out 'screenshot' command; f=optimizer

Changes:
* Be consistent in using " rather than ' where possible
* Convert from JSM style to JS style, which means:
  * Adjust require paths to fit with SDK loader conventions
  * Use exports.items rather than EXPORTED_SYMBOLS
Bug 984365 - Split out 'restart' command; r=mratcliffe

Changes:
* Be consistent in using " rather than ' where possible
* Convert from JSM style to JS style, which means:
  * Adjust require paths to fit with SDK loader conventions
  * Use exports.items rather than EXPORTED_SYMBOLS
Bug 984365 - Split out 'tools' commands; r=mratcliffe

Changes:
* Minor indentation tweak
* Add a { and } to simplify a function block
* Be consistent in using " rather than ' where possible
* Convert from JSM style to JS style, which means:
  * Adjust require paths to fit with SDK loader conventions
  * Use exports.items rather than EXPORTED_SYMBOLS