Reset password signs the user in

Closes #4196
- Also cleaned up some .then(f, h) to .then(f).catch(h) in setup controller
With `.then(onSuccess, onError)`, the `onError` function will only be called for errors that occur within that specific `.then`.  If it's changed to `.then().catch()` it will catch any error that occurs ahead of it in the chain of promises.

So before the change an error that's thrown by `ajax()` will be caught by the bottom `, function (errors)` handler but after the change it's going to get caught by the first one.

Unless of course I'm just confused.