add reset password with username

When email address is not used as user name, it is possible that an email address is registered to multiple accounts. If user tries with reset password of such an account, ResetPassword cannot determine which account to reset.

Implemented ResetPasswordWithUserName so that user's account is uniquely identified and reset when user name is not email address.