AbstractUser()
Useful base class for implementing a User object.
This class handles the caching logic so you can concentrate on the actual authorisation logic.
Just implement the abstract methods in your concrete sub-class.
Author Tim Fox