Distro inheritance semantics

*** This is an experimental patch, not well tested and incomplete ***

The distro is always inherited from the base-level profile, even if
the 'distro' attribute is overridden at higher levels in the
inheritance tree.

This differs from other missing attributes, which are inherited from
the closest ancestor where the attribute is set.

This can be counter-intuitive when higher-level profile 'distro'
attributes are set with the expectation that the base-level distro
will be overridden.

This incomplete patch does part of the work to implement these changed
semantics.

Things to note:

Some of the changed code is hacking around Profile.get_parent(), which
returns the distro object if there's no self.parent.  I don't know the
code well enough to remove that behavior.

Tree objects have a new 'get_inherited_distro()' method that returns
the distro object set in the nearest ancestor (starting with itself).
This function should replace 'get_conceptual_parent()' when the
'conceptual parent' is expected to be a distro object.

Then utils.grab_tree() builds the tree with the top inherited distro
at the base instead of the base profile's distro.  When
utils.blender() runs __consolidate(), it picks up attributes from this
distro object.  (__consolidate() also no longer treats the
Profile.distro attribute specially, so it is inherited as other
attributes and matches the inherited distro object's name in 'report'
and 'dumpvars'.)

A known, major missing piece is many other places where 'distro =
profile.get_conceptual_parent()' should be replaced with
get_inherited_distro().
koan: Add storage pool refresh function

When an RBD volume is created with qemu-img, libvirt is not
automatically notified, and trying to attach the volume causes an
exception.  The storage_pool_refresh() function scans uses virsh to
scan pools, and any pool that contains one of the created disks is
refreshed so that libvirt knows the volume exists.
koan:  support rbd volumes

Add rbd to driver lists and fix problems with rbd
source-protocol/format/driver confusion.

qemu-img/kvm and virt-install have different requirements for disk
args specification.

The qemu-img '-f' option stands for 'format', except when creating RBD
volumes (or maybe any 'network' type disk, incl. iSCSI and sheepdog?),
it stands for 'protocol', an attribute in 'network'-type disk 'source'
elements.  In addition, qemu-img (qemu in general) wants the disk
identifier to be preceded by 'rbd:', which virt-manager and libvirt do
not.

Since the RBD volume is being created by qemu-img, virt-manager
considers it 'managed or other existing storage', and therefore wants
the disk identifier specified in '--disk vol=' rather than '--disk
path='.  It also complains about specifying 'format=' for existing
volumes (and if that were allowed, would be 'raw', not 'rbd').