Implement methods to modify volume metadata.

There are four methods in nova/volume/cinder.py which are
NotImplemented. They are as follows:
  1. get_volume_metadata
  2. delete_volume_metadata
  3. update_volume_metadata
  4. get_volume_metadata_value
These methods are required in cases where nova needs to modify
a cinder volume's metadata, e.g. attach and detach time. It also
completes the cinder.API class.

Change-Id: I360076ae28db43e661466f556425947813c9040e
Closes-Bug: #1296164
Keep Migration status in automatic confirm-resize

function in compute/manager.py _poll_unconfirmed_resizes
will translate the migrate status from finished to error
whenever finds a problem ,Consider the following case

1) _poll_unconfirmed_resizes runs and founds several migrations to be confirmed
2) user deletes the instance, so its task state will be changed to DELETING
3) _poll_unconfirmed_resizes will find the task state is not None,
it will make the migration error status
4) following code in _delete
if instance.vm_state == vm_states.RESIZED:
self._confirm_resize_on_deleting(context, instance)
will fail because migration status already updated

User is able to do the migration operations when they found error
so we don't need to handle this kind of error for them

Change-Id: Ia79dd56c9c1fa8add7dc138d838cbfbac4523ac3
Closes-Bug: #1301696
Use rfc3986 library to validate URL paths and URIs

More work needs to be done in rfc3986 to give the user more control over what
they consider to be a valid URI in the context of RFC 3986. For example, a
previous incarnation of these tests checked that "1" and "abc" were invalid
when according to the RFC they are.

Update the API samples and tests to use valid URIs

DocImpact

Change-Id: I288fbaead64990db1053b7a11e82904611b8498f
Merge "Keep Migration status in automatic confirm-resize"
Merge "Implement methods to modify volume metadata."
Merge "Use rfc3986 library to validate URL paths and URIs"