Add V3 api for pci support

All pci passthrough code is merged into nova, but the APIs are not supported.
This patch provides a resource: endpoint to show PCI information. This is a
part of PCI APIs, for more information see the blueprint.

Partially implement blueprint pci-api-support

Change-Id: I05c502cb7564b8b71f12d8f06249124b3d2b370f
Remove XML support from schemas v3

The XML support was removed from the V3 API plugins,
this part of the code was not used again.

Partially implements blueprint remove-v3-xml-api

Change-Id: I7bc3ed2386d8d678eb13ac4592e4cce2ba8a1602
Refactor driver BDM attach() to cover all uses

Add separate flags to allow the execution to skip the
volume_api.check_attach step, and to be able to call the
driver.attach_volume if needed. This will make the method modular enough
to be used in all cases where we actually "attach" volumes to instances.

Check attach should always be done in the API, followed immediately by a
reservation, to minimize the chance of a race. However currently we
do the check_attach step on the compute side during boot, so it needs to
stay. Other operations like attach_volume will have it reserved causing
this check to fail on the compute side, so we lay down the groundwork to
be able to skip it when calling attach().

Likewise, when booting, we don't need to call the virt driver
attach_volume method, as all the devices will be taken care of by the
boot code path.

Part of blueprint: use-new-bdm-format-in-attach

Change-Id: Iff3890e39a8c75b1693df0918084ecf4492c4e91
Merge "Remove XML support from schemas v3"
Merge "Add V3 api for pci support"
Merge "Refactor driver BDM attach() to cover all uses"