[FEATURE] Add password reset
Currently only server admin is able to modify user's passwords. But a common issue is that, regular users forget passwords and want to reset it.

How should it work:
There should be a new endpoint added: /users/reset_password, requesting a password reset. It will receive email in a POST request. It should generate an unique id via `utils.common.unique_id()`, it should be saved to redis via `settings.settings.redis_pool`, and an email must be sent to that address with a link to reset password. There is `utils.email` for sending email messages, but a server-wide SMTP server setting must be introduced (configured by server admin). 

There should be an endpoint POST /users/reset_password/finalize/{code}, which receives 4 fields
oldpassword
password1
password2

Conditions must be met:
password1 == password2
hash(oldpassword) == password_hash (utils.authorization)
Then it should check that code actually exists in redis  and indeed matches that exact user (in redis via code we can store user's email)
Then code is deleted from redis
Password is changed in database

Also email link should probably point to admin panel's page, not to API directly. That can be handled separately