Plugin for test pages

After the refactoring this is the first pull request that allows using plugins, so far only to modify the content of a test page.

This is achieved by exposing some middlewares and adding the modules

- plugins where you can require a plugin from disk or npm
- testPage where you can add element into a test page

For testing purposes, this pull request introduces also an attester.dispose to cleanly dispose all objects created.

Conflicts:
	lib/attester/cli.js
	lib/test-type/aria-templates/at-test-type.js
	lib/test-type/base-test-type.js
	lib/test-type/mocha/mocha-test-type.js

Conflicts:
	lib/launchers/phantom.js
New logging level for socketio

Added 5=TRACE logging level, and made socket.io's debug use that level.
refactor Use promises/Q instead of attester.please.*

Conflicts:
	lib/launchers/phantom.js
Maintenance

This commit does a number of little fixes:

- fix a problem with undefined PhantomJS id
- do not reboot PhantomJS when received SIGTERM
- add `grunt-cli` file and update package.json so that we can
  pass parameters to node executable if needed
- remove `shortCut` since it's only used in one place and adds
  unnecessary complexity
- added some debug logging
- removed unused import

This commit also changes order of loading attester modules, so that
when they're unloaded in __reset__, it's done in an order that gives
more chance for the websocket connection with PhantomJS to be closed
before attester kills the Phantom child processes.

However there's still a timing issue to be worked around properly
(since things are asynchronous both on server and client), hence in
Node 0.10 it's still likely to see this error message when disposing
attester:

  [attester.TestServer.socketio] socket error Error: read ECONNRESET
      at errnoException (net.js:904:11)
      at TCP.onread (net.js:558:19)

Note that this timing issue likely doesn't occur when attester is started
with debug log level, due to this call in the code:

  attester.logger.logDebug("__reset__ " + module);

Then the server is a bit more busy and the client has more time
to disconnect properly.
fix PhantomJS not re-connecting in suite after attester reset

The load_plugin test was failing due to the fact that launchers were not
reconnecting after attester restart.

(test: grunt jasmine_node --grep=load_plugin)