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
feat #13 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

Remaining tests countdown can be slightly imprecise because we decrement at task
finish but print on test finish, but it's good enough to not complicate
the code unnecessarily.

Close #13. Close #29.
Log unfinished tests instead of undispatched

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.
Log campaign elapsed time at the end
Browser detection by operating system

Close #38.