Add API schema for aggregates set_metadata API

This patch adds API schema for aggregates set_metadata API.

Partially implements blueprint v2-on-v3-api

Change-Id: I2d1e454f87870554cdeff50cc2de522c34fe81d4
Convert hardware.VirtCPUTopology to nova object

All objects that have data that may eventually be serialized across the
wire in RPC comms, stored in a database, or potentially change their
schema, should be nova.objects. This patch changes the staticmethods on
the nova.virt.hardware.VirtCPUTopology class to a collection of private
(and one public) regular functions in nova.virt.hardware that consume and
produce nova.objects.virt_cpu_topology.VirtCPUTopology objects.

Change-Id: I2244aa7125b11568bc04d35e5de3eb2ee8c15167
Switch to oslo.config fixture

The fixture from oslo-incubator has moved to oslo.config,
we need to use this from now on. The copy of the fixture
in nova/openstack/common/* will be removed in a subsequent
review in this series.

Change-Id: I2d91db8c1535ca60f59f9d55c9d19de3e84dc40b
Add obj_set_defaults() to NovaObject

This provides a way to set the default values on fields that have them.
Previously, defaults were only set on nullable fields when set to None,
which wasn't universally-useful.

Related to blueprint kilo-objects

Change-Id: Ie646c0363d4af22ec8a588a6a1567c30bab99ebb
Merge "Convert hardware.VirtCPUTopology to nova object"
Merge "Add obj_set_defaults() to NovaObject"
Merge "Switch to oslo.config fixture"
Merge "Add API schema for aggregates set_metadata API"