Add new fields to the networks table

Adds a migration to add mtu, dhcp_server, enable_dhcp, and
share_address to the networks table. The field for dhcp_server defaults
to gateway, since gateway is currently used to determine the
dhcp_server value. The value for mtu and share address is determined by
a flag, so copy the value from the flag into the table during the
migration.

Partially-implements blueprint better-support-for-multiple-networks

Change-Id: I8278fb125e6e478b519c875eca9ebbf778d88d74
Don't replace instance object with dict in _allocate_network()

The compute manager _instance_update() method returns a dict
version of the modified instance.  allocate_network() is the only
method which uses this return value rather than ignoring it, which
has the side effect of replaces the instance object it has been passed
with a dict.  None of methods called after this update need the modified
state values, so we can just ignore the return value as all of the
other calls do.

Passing on an object instead of a dict allows us to clean up the
system_metadata handling in _alloc_network_async() as well.

Related to blueprint compute-manager-objects-juno

Change-Id: I3249bba03edab4dd45eec72f7abdb15d7800346e
Merge "Don't replace instance object with dict in _allocate_network()"
Merge "Add new fields to the networks table"