Change AuthenticatedUser user to interface class.

This is necessary to force downstream classes to implement key required
functions.
Split AuthenticationBackend into two -
  - StaffAuthenticationBackend - handles backends supported in staff panel
  - UserAuthenticationBackend - handles backends supported in user panel

Registering a backend at parent level (AuthenticationBackend) will make it
available to both panels.
Split AuthLockoutBackends into two backends - for staff and user.

Monitor failed login attempts and enforce timeouts
Add TicketUser class which implement AuthenticatedUser
Add token (authtoken) based authentication to User authentication backend.
Use staff authentication backends on login and when selecting staff's
authentication backend.