Create Authentication Plugins

To support backwards compatibility the client object is now a legacy
authentication plugin which will be used only when a session is not
provided. The v2 and v3 authentication plugins are then created as
needed and are used to do the real authentication work.

Change-Id: I682c8dcd3705148aaa804a91f4ed48a5b74bdc12
Handle URLs via the session and auth_plugins

Change-Id: I80f0b5b1dbb45565fec09d1cb2c0552cfb9a72f5