实现密码重置功能

还有一些需要改进的地方，我已经列在代码的 TODO 中了。

 - [ ] 发件邮件时使用异步，避免用户等待
 - [ ] 相关文字的国际化处理
 - [ ] 重置密码成功后也要向用户发送确认邮件