Add encrypted flag to volumes

Currently, the only way to determine whether a volume is encrypted
is by retrieving the encryption metadata about the volume (through
cinder.api.contrib.volume_encryption_metadata) and checking the
encryption_key_id value.  This patch adds an "encrypted" flag to
the basic volume api to enable other services (like Horizon: see
patch https://review.openstack.org/#/c/71125) to easily tell
whether a volume is encrypted using a basic get call,instead of
requiring an additional call.

Implements blueprint encrypt-cinder-volumes
https://blueprints.launchpad.net/nova/+spec/encrypt-cinder-volumes

Change-Id: Id8e422135f17795de06589930afd0309fde28fd1
3PAR: Backend assisted volume migrate

This patch implements volume migrate using native 3PAR APIs.

Prerequisites:
1. Same 3PAR backend
2. Volume cannot be attached
3. Source and Dest CPGS are in the same domain

Steps:
1. Create a temporary volume in the destination with a copy of the source
2. Wait for the copy to complete
3. Delete the source
4. Rename the temporary to the same name as the original

Change-Id: Ia42503d41bf8afd908cd3ffb0288f0d353f313f1
Implements: blueprint native-3par-migrate-volume
Fix race in test_delete_backup

Unit test sporadically failed due to timing issue - the deletion
timestamp on the backup was exactly the same as timeutils.utcnow(),
causing the AssertGreater check to fail.  Change to AssertGreaterEqual.

Change-Id: Ia66d0d4bdae3242780a91f0d384cbd17caa8c197
Closes-bug: #1284227
Merge "Add encrypted flag to volumes"
Merge "3PAR: Backend assisted volume migrate"
Merge "Fix race in test_delete_backup"