IE11 support

Close #78
Bump jasmine, jshint and other deps

Close #83
Fix ua-parser require issue

In 44ed552b542dc65e7cfe9360ebd631fc7eeb0a75 the dependency has been
changed in package.json but it was not updated in the code.
Removing exit-process.js and using the exit npm module instead.
Improve error handling for PhantomJS

1) Try to reboot Phantom instance (3 times) if it died from recoverable error
2) Exit attester when all PhantomJS instances died without hope to recover

This fixes the following issues:

- In case it was impossible to connect to attester by PhantomJS
  instance within specified timeout, the phantom process was exiting,
  but without propagating the error to attester.
  Now it propagates the error, and additionally the timeout was increased

- Now once the page emits `DOMContentLoaded`, the timeout starts from zero

- If all PhantomJS processes die (i.e. exit with code != 0) for any reason,
  now this is caught and makes attester exit with non-zero code too.

- Also, Phantom instances now have deterministic ids from 1 to N.

Close #79
1.4.0
Fix onInitialized overwriting

In commit a26269f083eb51c49626d587a645f55f771c826c
page.onInitialized was mistakenly overwritten which made robot unusable.

Close #85.
1.4.1
Fixing travis build (by updating npm in before_install).
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)
Bump AT

This fixes https://github.com/ariatemplates/ariatemplates/issues/953
refactor Add .gitattributes
refactor Rename some files

...so that there are no multiple files with the same name doing different
things as this creates confusion.
refactor Move files
refactor Stricter JSHint

Copied JSHint options from AT, only enabling 'node' and mocha-specific
globals.

Removed some unused imports.
Make phantomLauncher and browserLauncher init and reset aware