Upgrade factor-bundle to 2.3.3

This fixes a bug where the common bundle would generate different output
when executed via the gulp watch command.
Add testem, mocha, and chai

I added the latest versions of mocha and chai for JS unit testing.

The target version for testem is slightly older (0.5.15) because the
latest version would not detect file changes when run inside a VM.
Update shrinkwrap

No changes.
Add JS test harness

Changes:
* Add initial JS tests and tests bundle task (say that 10 times fast) to
  gulp build file
* Add the testem HTML harness during provisioning (development only)
* Add ./scripts/testem.sh to run JS unit tests in a browser window
* Add testem (ci mode) to ./scripts/test.sh to run tests on Jenkins
Fix lint
Add Xvfb support for JavaScript tests

This changeset installs the X virtual framebuffer (Xvfb) so that Testem
can drive a headless Firefox.
Add watchify-tests command

We observed very strange behavior mixing watchify with gulp.watch... The
simplest solution seems to create a separate task just for watching
tests.

It's important to lint JS before running browserify in order to prevent
the watch command from exiting with an error status.
Merge pull request #129 from kdeloach/topic/js-test-harness

Add JS test harness