cli.py:  more meaningful messages on server exceptions

Make it clear that the exception originates server-side, and don't
trim the string, which may not be enclosed in quotes
utils.py:  fix set_virt_type() when value is <<inherit>>
koan/app.py:  get install tree from self.server, not profile_date

When a profile overrides the 'server' parameter, that address may not
be addressable from the VM host; instead, use the same address used on
the koan command line.
koan/app.py:  handle kickstart url '--proxy' argument
utils.py:  add default to choices in add_options_from_fields

Most notably, this adds '<<inherit>>' as a choice to many options with
a set list of choices
Distro inheritance:  do what's expected

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

Profile objects may have the 'distro' attribute set at any level in
the inheritance tree.

Other missing attributes are inherited from the closest ancestor where
the attribute is set.  However, 'distro' attribute was not, and the
distro was always selected from the base profile in the hierarchy.

This countered expectations when higher-level profile 'distro' attributes
were set but not honored.

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.

Changes:

The tree objects have a new 'get_inherited_distro()' method that
returns the distro object set in the nearest ancestor (starting with
itself).  ('get_distro()' is a helper function)

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

A few places in kickgen.py where 'distro =
profile.get_conceptual_parent()' are replaced with
get_inherited_distro() instead.  There are many other such places that
need to be examined.
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').