Add dict and json methods to VirtNUMATopology classes

We will need to serialize and de-serialise these, so we add a method to
base Cell and Topology classes that will handle transformations to and
from JSON. Internally this uses (also newly added) _{to,from}_dict()
methods, which are handy to have (especially for testing), but should
not be used outside of the serialization logic.

We also add defaults to the VirtNUMATopologyCellUsage for the usage
bits, and add a class attribute 'cell_class'  to VirtNUMATopology that
makes it possible to write most of the serialization methods in a
more general manner.

Blueprint: virt-driver-numa-placement
Change-Id: I552d642994f273215c307da7e0f11d77ee410acb
Merge "Add dict and json methods to VirtNUMATopology classes"