Management commands and extra functionality

@vladimir-v-diaz , Could you please review this?

There are four files and settings is unimportant (commit 79ce450) so that makes three effective files for review. The management commands are the same thing, so reviewing only demote user -- which is more complicated -- and then skimming through promote_user is more than enough; hashers.py is the real deal here.

Also, @justquick , since this is a big enough patch/update, could you also give it check?

`get_random_string` is not used in this module.