feat(server-tests): code coverage and e2e

Changes:
- split server tests into `unit` and `e2e` type test
- adjust `mochaTest` and `test:server` tasks to reflect the two types of tests
- implement `grunt-mocha-istanbul` task for server-side code coverage
- add `test:coverage` task
- improve `mocha.conf.js`
- add sinon, expect, and assert as globals to `server/.jshintrc-spec`
- add `proxyquire` to the app for better stubbing in unit tests
- improve test to reflect recent changes and to lay ground work for more coverage

Grunt Task `test`:
The grunt 'test' task now has a 'coverage' target. Used like so `grunt test:coverage`.
This task will run istanbul for the server unit tests and e2e test separately.
The resulting coverage reports will be placed in `coverage/(unit|e2e)`. There is also an option
for the `test:coverage` task, possibilities for option are:
- `unit`
- `e2e`
- `check`

`test:coverage:check` will check the coverage reports for both `unit` and `e2e` and
report whether or not they meet the required coverage.
@DaftMonk this is the jshint [expr](http://www.jshint.com/docs/options/#expr) issue. This line and 62 are considered expressions only. Most of the other assertions that return are returning a promise to be asserted by mocha.