Work with case-sensitive email addresses

Closes #4235
Since `getByEmail` returns `undefined` when a user doesn't exist instead of returning a rejected promise I think this changes way behavior of this `Promise.join()`.  With `getByEmail` the `.then` block is going to be called and `results[0]` will be `undefined` which will result in an exception being thrown when `.save` is invoked on it.

Probably just need to check for a valid result and proceed accordingly.