Merge pull request #469 from kingcody/fix/order-of-operations

fix(app-config): Use parentheses to fix string concat in config
Merge branch 'master' into canary
use more restrictive matching for serve-favicon version
Merge branch 'master' into canary
feat(auth): make crypto async

- Update tests and add new test for changed password
- User.authenticate() User.makeSalt() and User.encryptPassword() public API remains same
- User.authenticate() User.makeSalt() and User.encryptPassword() callbacks are optional

- Change User schema from hashedPassword to password
- Remove unnecessary virtual attribute User.password, getters and setters are not async
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
fix(server-tests): `test:coverage` task

Changes:
- add missing `option` argument from `test` task
- define `istanbul_check_coverage` with `jit-grunt`
- place server coverage reports in their own folder: `coverage/server`
Merge pull request #507 from kingcody/fix/test-coverage

fix(server-tests): `test:coverage` task
Merge branch 'canary' into pr/481

Conflicts:
	app/templates/server/api/user(auth)/user.model.spec.js
fix user model test
feat (mongoose): use mongoose-bird to promisify the mongoose API
fix(gen): filter `client/components/socket` js files

Changes:
- add `(js)` filter to the js files in `client/components/socket`

Closes #530
test(gen): make tests more strict and DRY

Changes:
- `genFiles(ops)` creates an array of expected files based on options given
- test for generated files on every set of tests
- test for unexpected files
- use testExec to be more DRY

Exposes a bug with `client/components/socket`:
`socket.service.js` and `socket.mock.js` are not filtered.
See #530
Merge pull request #531 from kingcody/refactor/gen-tests

test(gen): make tests more strict and DRY
Merge pull request #532 from kingcody/fix/client-components-socket

fix(gen): filter `client/components/socket` js files
Merge branch 'master' into canary
fix unexpected files created in tests
test(gen): clean up code and test more endpoint combinations

Changes:
- remove unneeded code
- use runTest for endpoints as well
- test endpoints with different options
- test endpoints with various cased named

Exposes Bug:
See #540