User API changes

closes #2822
- added destroy user method
- added remove user permission
- added API end point for get reset token
- added API end point for reset password
- added API end point for change password

I'm not sure if that is a good reason, but that seemed to be the cleanest way to reject the `canThis` call with a `NoPermissionError` when it was first implemented. Definitely something to refactor in the future :-).