feature(test): Add a front end code coverage task - `grunt coverage`

* Use blanket as the coverage reporter.
* Install `grunt-blanket-mocha` to handle reporting results to grunt.
* Set up new grunt task, `grunt coverage` for reporting.
* Add more front end tests where coverage was lacking.
* Hook up code coverage results to the intern by running tests in PhantomJS
* Only enable code coverage if explicitly requested
* Only enable front end tests in dev mode.
* Fix code that gave PhantomJS problems (Function.prototype.bind)

outstanding:
- [x] - report results from sauce/intern

closes #403