Make network_cache more robust with neutron

Currently, nova treats neutron as the source of truth for which ports are
attached to an instance which is a false assumption. Because of this
if someone creates a port in neutron with a device_id that matches one
of their existing instance_ids that port will eventually show up in
nova list (through the periodic heal task).

This problem usually manifests it's self when nova-compute
calls to neutron to create a port and the request times out (though
the port is actually created in neutron). When this occurs the instance
can be rescheduled on another compute node which it will call out to
neutron again to create a port. In this case two ports will show
up in the network_cache table (since they have the same instance_id) though
only one port is attached to the instance.

This patch addresses this issue by only adding ports to network_cache
if nova successfully allocated the port (or it was passed in). This
way these ghost ports are avoided. A follow up patch will come later
that garbage collects these ports.

Closes-bug: #1258620
Closes-bug: #1272195

Change-Id: I961c224d95291727c8614174de07805a0d0a9e46
Correct network_model tests and __eq__ operator

The current network_model tests mix IP() with FixedIP()
in several places. This patch corrects this issue. This was discovered
while adding logic to determine if the network_cache needs to be updated.
While updating the __eq__ operator to check all of the objects fields
rather than just id there tests started failing.

Closes-bug: # 1260891
Related to blueprint: smarter-network-cache-update

Change-Id: I6d144aecf95725146aa0fc4f4fe5a3f16c434d14
Store neutron port status in VIF model

This patch adds a field into the VIF model called status
which is True if a port in neutron has a status of 'ACTIVE' or
if a port is marked as admin_state_up=Fase (as the user has marked
the port to be down). Otherwise this value will be false. This is
needed for the admin-event-callback-api work. This allows nova-compute to
check the vif status to determine if it needs to wait on a vif-plugged
event before starting a instance.

Related to blueprint admin-event-callback-api
Change-Id: I25d03739afc1f3d74d2830e08ccb418e8cfd664e
Merge "Make network_cache more robust with neutron"
Merge "Correct network_model tests and __eq__ operator"
Merge "Store neutron port status in VIF model"