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
Replace auth_token middleware tests with httpretty

Httpretty will work in exactly the same way regardless of whether we use
the httplib or requests library. Convert it so we can modify the
middleware and know that our tests are still correct.

In this process we also split the tests from having V3 tests override
V2 tests, to having a base test class and V2 and V3 seperate overrides.

Change-Id: I1bfcecc6ae47a6dd5e76d4ceb8b3941e6ad1089f
Merge "Replace auth_token middleware tests with httpretty"
Merge "Add apiclient.exceptions hierarchy"