Authentication backends revisited

The pull request revisits authentication backend - which introduces the possibility of having multiple (local and remote) backends to handle user authentication.

* Authentication Backends - Splits the authentication backend into two, user and staff backends. It's necessary in cases where an authentication method only makes sense in one panel...eg Facebook login might be allowed for client panel but not for staff panel login.

* AuthenticatedUser - Going forward authenticated user (... both staff & client) must implement AuthenticatedUser interface class as we work towards unified system-wide User.