Password reset

1) add PasswordResetController
2) add views for PasswordResetController
3) add specs for PasswordResetController
4) add code for PasswordResetController
5) add validation on password length

Please approve.
It must be down cased, because I validate uniqueness based on that and validation of uniqueness runs against database - I don't want to have JOHN@EXAMPLE.COM and john@example.com in database or JoHn@ExaMplE.com - it simple can not be that way, also it would destroy data integrity imo. It would be much more cost inefficient when I would not downcase it. Email plays a role of key unique identifier in some applications. But in general yes, user inputs should not be modified unless there is really good reason for that.