User options - reset password, also: error/success refactor

Implemented a password reset function for users. This will work for all
user types, and checks that input is valid before submitting changes to
the db.
Also significantly refactored how error and success messages are
displayed by folding this into session and the display into header.