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