grunt: add coverage task

This task is a combination of four other tasks:

* copy from grunt-contrib-copy: copies app/ to coverage/instrumented,
  with some unneeded files excluded

* instrument from grunt-istanbul: adds instrumentation to our
  JavaScript files. The instrumented files are put into
  coverage/instrumented/

* protractor_coverage from grunt-protractor-coverage: runs protractor
  on the instrumented files. This task starts a coverage-collector
  server running on port 3001. The tests are modified on the fly to

  1. Ask the browser for the __coverage__ object which is where the
     instrumented files record the coverage data.

  2. POST this __coverage__ object to http://localhost:3001

  Protractor is done, the total coverage data is collected from the
  coverage collector and stored in coverage/coverage.json.

  The specs glob is listed here again since protractor_coverage
  handles it differently than protractor itself: protractor expands
  the globs relative to the config file and protractor_coverage
  expands them relative to the current working directory.

* makeReport from grunt-istanbul: outputs a coverage report to the
  console and a detailed HTML in coverage/e2e/lcov-report.
travis: collect and upload coverage data for e2e tests
travis: remove unecessary sleep

We already have sufficient delays in the setup because we spend 4-5
seconds downloading the webdriver.