Enforce metadata string type on key/value pairs

The compute API is currently enforcing quota limits for user metadata
and length restrictions on the dict entries, but is not enforcing that
they are string types. This patch adds the checks for string type on the
keys and values in the metadata dict.

Closes-Bug: #1240319

Change-Id: Ic4aacc342cf37d929871287e6e4917f4f48b63e8
Add shutdown option to cleanup running periodic

Add a 'shutdown' option to the periodic task that cleans up instances
which are both deleted *and* running.

The option powers down instances and marks them as non-bootable.  This
is a flag for system administrators who would like to reclaim the
resources consumed by each instance, but leave the records around for
later examination/debugging.

DocImpact
Implements: blueprint cleanup-running-deleted-shutdown

Change-Id: Id95845eb995b62ed8858fe61c6fdb34045721674
Move calls to os.path.exists() in libvirt imagebackend

The checks for the path existence were removed from the base Image class
to avoid redundant checks (some of implementations also perform them and
behave differently depending on the results). Also special handling for
some backends were removed from the base Image class.

Change-Id: Ie6cdf0d6d9801f84fae7a58c1034547611712323
Closes-Bug: #1152748
Replaces call to lvs with blockdev.

Replaces the call to lvs in virt/libvirt/utils.py:logical_volume_size()
with the more general blockdev.

Implements: blueprint encrypt-ephemeral-storage
Change-Id: I3e4e4e927a98fa9e396618e45ac01cc836a75988
Merge "Move calls to os.path.exists() in libvirt imagebackend"
Merge "Enforce metadata string type on key/value pairs"
Merge "Add shutdown option to cleanup running periodic"
Merge "Replaces call to lvs with blockdev."