Refactor users and auth to modules. Add reset_password endpoint