travis-841337: Add Output/promise, fix toString

Output (i.e. what you get from an exec) needs events because the result
of an exec could evolve (e.g. "tail -f") but we also want a simple
'are we done' thing. This adds that so Output now has a then function
which acts like a promise.

Also we fix toString which should have used this.data in place of output
which must have been a cut and paste error. And remove the console.error from
update() to allow errors to propagate.

Signed-off-by: Joe Walker <jwalker@mozilla.com>
travis-841337: Ease error reporting

Make detailedResultLog return a string rather than outputting it
directly to console.log.

Signed-off-by: Joe Walker <jwalker@mozilla.com>
travis-841337: Reflect test status in return code

Travis wants to know if a test passed/failed by the return code, which
is reasonable. This change reflects the status of the last command in
the return code from the single exec version of gcli.js

Signed-off-by: Joe Walker <jwalker@mozilla.com>
travis-841337: Add more jsdom exclusions

jsdom 0.5.0 fixes some stuff (i guess) but breaks some things. This
adds some exclusions.
Also while we're doing updates, this updates express and socket.io to
the latest versions too.

Signed-off-by: Joe Walker <jwalker@mozilla.com>
travis-841337: PhantomJS on your TravisCI

Continuously-multi-headless-testing FTW.

Signed-off-by: Joe Walker <jwalker@mozilla.com>