refactor(server-tests): use sinon-chai and `mocha.conf.js`

Changes:
- add `mocha.conf.js` and use it as a `require` in `mochaTest` task
- switch `should.js` for `mocha-chai`
- change server-side test assertions to user chai assertions

Breaking Changes:
- should.js is no longer included, chai assertions should be used instead.
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.
Merge pull request #505 from kingcody/feature/mocha-istanbul

feat(server-tests): code coverage and e2e