Guest-assisted-snaps libvirt implementation

This implements volume_snapshot_create and volume_snapshot_delete
methods which create snapshots of QCOW2-based Cinder volumes.

Libvirt implementation for blueprint qemu-assisted-snapshots
Add volume snapshot APIs to driver interface

Add volume_snapshot_create and volume_snapshot_delete to the virt driver
interface.  This is needed to be able to do hypervisor assisted snapshot
operations.

Part of blueprint qemu-assisted-snapshots
Add db.block_device_mapping_get_by_id

Add a new db API method for getting a block device mapping for a given
volume ID.  This is needed when Cinder calls over to Nova asking nova to
complete a snapshot operation on its behalf.

Related to blueprint qemu-assisted-snapshots
Assisted snapshots compute API plumbing

This patch adds the plumbing necessary to get assisted volume snapshot
calls down from compute.api down to a compute host.

Part of blueprint qemu-assisted-snapshots
Add an admin API

Add an admin API endpoint to Nova.  This is intended to be an endpoint
only exposed internally to the deployment.  It will be used for
integration with other services, such as Cinder or Neutron.

By default, the admin API listens on port 8776.  When adding information
to the Keystone service catalog, this new port should be used for the
adminURL.

As of this commit, the API exposed by this endpoint is identical to that
of the regular API.  However, hooks are provided for adding admin API
endpoint specific API extensions.  This will be utilized in future
commits.

Implements blueprint admin-api

DocImpact
WIP: Add os-assisted-volume-snapshots extension
Eric's test rig, do not merge

test infra

test env stuff

testrig 1

Conflicts:
	nova/compute/manager.py

test setup

test fixup