Load extension 2 times fix load sequence issue

Some extensions such as volumes need to inherit servers, however
the extension load sequence can't be guaranted. If the servers
extension is loaded after volumes, the controller of volumes will
be None and lead to problem.

Change-Id: Iec1e759f5c1f570a6b0ac65fb357b4f15102499c
Closes-Bug: #1373238
Adds APIVersionRequest class for API Microversions

Adds the APIVersionRequest class which handles converting the API
version requested from a request header string and supplies
comparison and matching methods used by microversions and REST
API code to determine what code paths to take.

Partially implements blueprint api-microversions

Change-Id: Ic75d36fc0d27b615e70e1fe56c1626e9e501b1d6
Set API version request information on request objects

This adds the looking for the X-Openstack-Compute-API-Version
header on REST API requests. If it is found it is parsed and the
version information attached to the request which is passed to
the API code. If the header does not exist then a version of 2.1
is set. If the header is specified but badly formatted a 400 Bad
Request is returned to the client.

Partially implements blueprint api-microversions

Change-Id: I8e73533cb0256b8a9329870714ffacb9893bb4c7
Change definition of API_EXTENSION_NAMESPACE to method

Moves definition of API_EXTENSION_NAMESPACE to a method so we can
mock it for unittests. This will allow us to do much better
unittesting for the API framework including the new microversion
features. It will also allow us to cleanup other framework type
tests which currently rely on real plugins.

Partially implements blueprint api-microversions

Change-Id: I093e15483fc84d823c09c84a218e5eb14f1de607
Merge "Load extension 2 times fix load sequence issue"