Change AuthenticatedUser to abstract class

Add ability for backends to set authorization key (authkey) specific to the backend.
The authkey is tagged with the "id" of the backend that generated it.
Add ability for the backends to continue authenticated user session

Checks the session for authkey and asks the backend that generated it to
validate it and return authenticated user.
Provide facility for the backend to signout on user logout.