Adding try/catch in slave handlers to avoid crashes.
Preventing a new history entry to be added for each test.

A new history entry is no longer created for each test. This is done by
creating a new iframe DOM element for each test (after the one for the
previous test is removed).
Update jasmine

Closes #28
Prevent passing undefined strings to Path utils

Part of Node 0.10 compat. In Node 0.8 undefined values were treated as
empty strings in Path utils, no longer the case in 0.10.

Closes #28
Mark errors and failures on red in campaign's final status

The final status line was all-green regardless of the results.

Closes #28
refactor order of requires

Unified the order of require'd files for better readability.

First, Node requires (e.g. 'path', 'http').
Then, npm requires (e.g. 'connect', 'optimist').
Then, local classes (e.g. './OurLib.js').
Then, local functions (.e.g './exit-process.js').
Each group is newline separated.

Closes #28
refactor dependencies and defaults in lexical order

Closes #28
Enabling gzip compression for the http server.
Autooptimize & constrain no. of PhantomJS instances

Add an option to automatically calculate the best number of PhantomJS
instances (if `--phantomjs-instances auto` is passed to the script),
and to fix incorrect / too big input values.

The CLI parameter is required, because the default is 0 (don't use
Phantom).

The number of instances will be constrained to available CPU threads and
free memory. Exceeding the resources results mostly in decreased
performance and/or crashes.

Before that, there was a way to set the number of instances by invoking
e.g.

`npm config set ariatemplates:phantomjsInstances 8`

but this worked only when running attester via `npm run-script` (the
default value in `package.json` had to be 2 due to limitation of Travis
CI).

Close #30.
Exception in AT test constructor stopping attester

When an exception was thrown from the constructor of the AT's test-under-execution,
it was not caught by Attester and made it wait indefinitely for the test
result.

Close #26.
Close #31.
Interactive page to debug tests

Add an interactive page that can be used to easily debug tests of any test-type.

`BaseTestType` now has an additional parameter, `debug` that is specified links to this interactive page.

To do so, this commit introduces generic middlewares.

Close #34
Default port 7777; check if port available

Attester used to let Node decide about the port for the server if it was
not passed as a parameter. This however is not very handy to have random
port on each run.

This commits makes 7777 be the default port (unless some value is
explicitly passed, or 0 for the old, random behavior).

Also, if the passed port number (or default one) is taken, the next
available port number is used instead and a warning is printed.

Close #32.
PhantomJS installation guide
Handle task timeout

This commit introduces a general timeout for tasks at server level.
Some test environment (mocha) handle timeout on the slave, however this might fail or not be available at all.

If the server doesn't receive a task finish from one of the slave it'll mark the task as error and go on with another one.

The task timeout is configurable from the command line with `--task-timeout` and by default is 5 minutes.

Close #37
Console report enhancements

Added:
- print remaining tests countdown (per-browser and total)
- print browser name and version
- print test elapsed time
- mark long-running tests (over configurable threshold) with a different color
- logging of connected and better logging of disconnected slaves
- log unfinished tests instead of undispatched
- print campaign elapsed time at the end

We used to log the number of tests that have not started yet instead of
ones that were finished, which led to incorrect numbers especially when
using multiple browsers at the same time.

Now this is corrected both in the console and Attester status page.

Close #13. Close #29.
Better logging on the slave

Redesign the slave interface to have a clear understanding on what's happening on the slave.
This is obtained enabling console.log and writing logs in a div when the URL parameter `log` is set to `true`.

If also adds additional elements in the page that can be used to query the status of the slave with tools like selenium.
An invisilbe element with id `status_info` contains another element with id

`_info_[status]`

Possible values for `status` are:
* `loading` when the slave is trying to connect
* `connected` or `disconnected` as soon as socket.io establishes or looses a connection
* `executing` while running a test
* `idle` after a test has been executed

Close #41
Fix typo and undefined value
Browser detection by operating system

Close #38.
Node 0.10 spawn error messsage

Node 0.10 changes the way of handling with failed spawns.

Close #43.
Bring iframe to front

With the new logging interface there's less space for the test itself.
Put the iframe above and over the rest of the page reserving only the space for the top bar.

Close #44