Make libvirt wait for neutron to confirm plugging before boot

This makes the libvirt driver use the instance event mechanism to
wait for neutron to confirm that VIF plugging is complete before
actually starting the VM.

Here we introduce a new configuration option of vif_plugging_is_fatal
which allows us to control whether a failure to hear back from
neutron is something that should kill the current operation. In
cases where consoles are not provided for the guest, failing is
the only reasonable action, but if consoles *are* provided, it may
be advantageous to still allow the guest to boot and be accessed
out of band.

In order to properly reflect the neutron failure in the instance's
fault property, this also extends manager to catch and re-raise
the VirtualInterfaceCreateException during spawn(). Also, since
the oslo.messaging merge, we weren't declaring expected exceptions
for run_instance() which this also fixes.

DocImpact: This requires a neutron that is aware of these events
           when using nova with neutron, or a configuration that
           causes nova not to expect/wait for these events.
Related to blueprint admin-event-callback-api

Change-Id: I2f771d8bade513d2e54d98a176069011950830aa
Merge "Make libvirt wait for neutron to confirm plugging before boot"