This introduces preliminary support for extensions.
Extensions are registered to routes, and if the
request matches the registered route they will be
called to handle the request and the response.
The interface is still not finalized and will
progress as more extensions with their different
requirements are added.
Also included dependency on oslo_serialization for
loading the json response. Follow up patch will
change all instances of json.loads to
jsonutils.loads
Change-Id: I9c573ce1d4ebe85c07c8ff219f384e3c6c67b39a