Add auth plugins

Historically we had auth_system in novaclient used for Rackspace Cloud
key based auth system.

Using auth plugins in keystoneclient makes easy to add new auth
mechanisms in keystoneclient as well as in third-party libraries.
Auth plugins can be discovered dynamically using stevedore and
chosen by auth system name.

Implements: blueprint keystoneclient-auth-system

Change-Id: Ie98c4f1ef0c83263e39129d40c643596a7cd67d9
Add apiclient.exceptions hierarchy

The new apiclient.exceptions hierarchy is more comprehensive
and it covers almost all HTTP error status codes. These
exceptions can be used in novaclient, keystoneclient,
glanceclient, and other client projects thus providing a
single inteface.

Users can have benefit from OpenStack clients raising exceptions
of known classes while now every client has its own classes making
difficult to catch, e.g., NotFound for every client.

Change-Id: Ia7b25880e0ffca3526525a0f0e77c7e77c4f0076
Use apiclient library

This library can be used in novaclient, keystoneclient,
glanceclient, and other client projects. The library
contains common code and uses python-requests for
HTTP communication.

Features:
* share one authentication result between sessions with
  several servers (good for horizon and python-openstackclient);
* reissue authentication request for expired tokens;
* pluggable authentication;
* rich exceptions hierarchy.

Partially implements: blueprint common-client-library

Change-Id: I9155613f012d7372b8a11e0950ac450b31a8c173