This further separates the concept of session and auth plugin so that
the session can be a completely standalone transport layer.
This is similar to how requests handles things. You can install an auth
plugin on the session object and then everything that works through the
session will be authenticated or you can specify the auth plugin per
request and only authenticate that request.
Change-Id: If4ed5af831cc35e259d9f963062261819f08a9d5