Improve shared storage checks for live migration

Distinguish cases that require shared instance drive and shared libvirt
instance directory. Reflect the fact that RBD backed instances have
shared instance drive (and no shared libvirt instance directory) in the
relevant conditionals.

Not-in-upstream: true
Partial-rally-bug: DE727
Partial-rally-bug: DE642

Note that a derivitive of this has been committed to upstream/master
in Juno and it should therefore be safe to drop this patch
after Icehouse: https://review.openstack.org/#/c/91722/
Fix dictionary update and key issues, update tests

Not-in-upstream: true
Partial-rally-bug: DE727
Partial-rally-bug: DE642
Pass rbd_user id and conf path  as part of RBD URI for qemu-img

Unlike rados.py, qemu-img does not use id from CEPH_ARGS and has to be
given a ceph user id and conf path explicitly in RBD URI

Closes-Bug: #1261675
Change-Id: I9226515f2a860ed45d12012fd5b6bc7e842f6d32
(cherry picked from commit 9e7e8daa66f0c05ac7ce3927562d246baf70067f)

Upstream-review: https://review.openstack.org/#/c/62592/
imagebackend: import rbd options

This makes unit tests happy

Signed-off-by: Josh Durgin <josh.durgin@inktank.com>

Not-in-upstream: true
Partial-rally-bug: DE727
Partial-rally-bug: DE642
imagebackend: handle iso images correctly with rbd

iso images are raw from qemu's perspective, so
allow cloning them. They just need to be exposed to
the guest as cdroms instead of disks.

This is handled by the disk config's source_device
attribute, not device_type. Use the correct attribute
in libvirt_info().

Signed-off-by: Josh Durgin <josh.durgin@inktank.com>

Not-in-upstream: true
Partial-rally-bug: DE727
Partial-rally-bug: DE642