Listener/Observer Pattern

Implemented a listener observer pattern in the User system as well as
adding minor functionality to be used by Observers such as blocking
authentication and registration and custom error messages.