libvirt: Make `fakelibvirt.libvirtError` match

When test code uses `libvirtError`, it may refer to
`libvirt.libvirtError` or `fakelibvirt.libvirtError` depending on
whether `libvirt-python` is installed.

The existing code had incompatible `__init__` singatures between the
two, meaning that a test could pass locally but fail when run on
Jenkins.

The solution is to make `fakelibvirt.libvirtError` match libvirt 1.2.3
exactly.

A convenience function, `make_libvirtError`, is introduced so that
exceptions can still be created in one shot.

Change-Id: I5aaecc57504c4aea3c049610ef188978c25cfdc4
Closes-Bug: 1305186
(cherry picked from commit 78156a7650237bd4875fbbf9cad8db87348f333f)
libvirt: Handle unsupported host capabilities

Neither libvirt-xen nor libvirt-lxc support
VIR_CONNECT_BASELINE_CPU_EXPAND_FEATURES so check for the proper error
code that is returned by libvirt.

The existing code was performing this check improperly by trying to
catch an enum value; instead, we need to catch the `libvirtError`
exception and then check its return code.

Co-Authored-By: Rick Harris <rconradharris@gmail.com>
Co-Authored-By: Andrew Melton <andrew.melton@rackspace.com>
Closes-Bug: 1297962
Change-Id: Ie8bf5c9d1f2a27c387f8b2f54a9bb729fa2f0985
(cherry picked from commit 5fc157e0f5245eb79be90cbc8ed545c396fd38af)
Merge "libvirt: Make `fakelibvirt.libvirtError` match" into stable/icehouse
Merge "libvirt: Handle unsupported host capabilities" into stable/icehouse
Merge remote-tracking branch 'upstream/stable/icehouse' into stable/icehouse