swift-simulator: avoid hard-coded URLs

To gather coverage data, we will be running the tests from a different
directory (since the JavaScript files will be copied to another folder
when they're instrumented by Istanbul).

So the simulator now uses the same logic as the Swift service to
determine account URL.
package: make protractor a top-level dependency

In a later commit, we will be using grunt-protractor-coverage to
collect coverage data from the protractor tests. That module comes
with a protractor_coverage task which calls protractor -- but without
declaring the dependency.

So we need to make protractor a top-level dependency so that
grunt-protractor-coverage can see it. However, that breaks
grunt-protractor-runner version 1.1.3, invokes webdriver-manager in
its postinstall script. The invocation fails with:

  $ npm install
  -
  > grunt-protractor-runner@1.1.3 postinstall /home/mg/tmp/node_modules/grunt-protractor-runner
  > node scripts/webdriver-manager-update

  webdriver-manager path: /home/mg/tmp/node_modules/protractor/bin/webdriver-manager

  module.js:340
      throw err;
            ^
  Error: Cannot find module 'adm-zip'

Upgrading to grunt-protractor-runner 1.1.4 or later fixes this since
it no longer tries to invoke webdriver-manager. We now invoke it
ourselves before running the Travis tests.
grunt: add update-webdriver task

This moves the job of updating the selenium driver into Grunt.
grunt: add coverage task (fixes #24)

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 (#24)
travis: remove unecessary sleep

We already have sufficient delays in the setup because we spend 4-5
seconds downloading the webdriver.
grunt: make e2e coverage report like karma coverage

Now neither prints anything special to the terminal.
grunt: concatenate coverage data

Despite submitting two reports, we only see the data for the second
report (from protractor) at the moment. Concatenating the two files
should make coveralls.io report the combined coverage result.
grunt: sort loadNpmTasks calls
Merge pull request #60 from mgeisler/e2e-coverage

Coverage for end to end tests