libvirt: Fix domain creation for LXC

A condition was introduced during domain creation that needs
disk_info to determine whether or not an instance was booted from
volume. Many calls to _create_domain_and_network were not providing
disk_info and thus the condition was always evaluating to True.
This change adds disk_info to each call that was missing it.

Closes-bug: #1370590

Co-Authored-By: Andrew Melton <andrew.melton@rackspace.com>

Change-Id: I23e7e013d3a51b8040dd37e5facfe75b480e1721
objects: Add several complex field types

Adds ListOfSetsOfIntegersField and DictOfIntegersField fields.

These three fields will be needed for NUMACPUPinningCell and
InstanceNUMACPUPinningCell object that will be introduced in
subsequent commits.

We also add the DictProxyField which will allow us to use any type that
can be converted back and forth between a string to be used as a key of
a Dict complex object field.

Change-Id: Id08ec2c436aa35a36fa7f146c6f530d28abec063
Blueprint: virt-driver-cpu-pinning
Adds NUMA CPU Pinning object modeling

Instead of creating new custom field types for bitmaps, this patch
instead implements the NUMA CPU Pinning on the compute node side of
things as a simple SetOfIntegers field.

We also add another ListOfSetsOfIntegres field to track siblings data

We add some simple convenience some simple operators to NUMACell to
detect the set of pinned and unpinned pCPUs for each NUMA cell in a
topology.

Co-authored-by: Nikola Dipanov <ndipanov@redhat.com>

Change-Id: I454acae0859b0d2af66cabfa3fc4e6a4279881b5
Blueprint: virt-driver-cpu-pinning
Merge "libvirt: Fix domain creation for LXC"
Merge "objects: Add several complex field types"
Merge "Adds NUMA CPU Pinning object modeling"