LoginViewController uses dismissBlock after successful login.

`cancelButtonDisabled` flag added to LoginViewController so it doesn't depend on the existence of dismissBlock anymore to decide whether to show the cancel button or not.

Fixes #2882. @koke can I bother you with a quick review?

> Right now LoginViewController always uses dismissViewControllerAnimated after a successful login which assumes that we will only use it as a modal view controller. In order to have a better control, we should use the dismissBlock after a successful login so the calling controller can decide whether to dismiss the modal view or pop to a previous controller.