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
Merge branch 'canary' into pr/481

Conflicts:
	app/templates/server/api/user(auth)/user.model.spec.js