Fix image metadata returned for volumes

When creating a volume from a glance image, cinder stores the original
image metadata in volume_glance_metadata. This is a key/value store,
and all the values are strings.

When Nova boots an instance from a volume, it passes the image
metadata returned by cinder, which is all strings. If a driver
expects these values to be ints, as they are when booting from an
image, it will get a type error.

This change also pulls size from the volume directly rather than
taking the value from the stored image metadata. This is because the
volume will have been created in 1Gb increments, and is unlikely to be
the same size as the original image. It may also have been
subsequently extended.

Change-Id: I7928f6be1ca99f1502941b9df2b443f2ca63a37b
Closes-Bug: #1367540
VMware: get_all_cluster_refs_by_name default to {}

Currently get_all_cluster_refs_by_name returns None when no cluster
is found.
driver.py is using the keys() method without checking whether the
object returned is None. This can potentially end up throwing an
AttributeError.

This patch fixes the issue by returning an empty dictionary when no
cluster is found.

Change-Id: I3293c916d79aaa4de8913e8ab9c609c9c0bb023e
Closes-Bug: #1372672
Remove unused code in pci_manager.get_instance_pci_devs()

Change-Id: Iec4aa59099a04b684358b44a06290584cc564507
Closes-Bug: 1361797
Merge "Remove unused code in pci_manager.get_instance_pci_devs()"
Merge "VMware: get_all_cluster_refs_by_name default to {}"
Merge "Fix image metadata returned for volumes"