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.

* makeReport from grunt-istanbul: outputs a coverage report to the
  console and a detailed HTML in coverage/e2e/lcov-report.