Register objects in more services

We should be making sure we're registering objects in the services that
use them. In patches that follow, we'll stop importing the specific
object modules under nova/objects/. Also, we should register objects
after the config has been parsed, logging setup, and things monkey
patched. Also, also, also: let's import all objects and put the imports
in alphabetical order.

Change-Id: I07f4584c43bd88960d543962a162cd1dd8dea09a
Address issues with objects of same name

There are at least a couple of cases where we may (in the future) introduce
multiple objects that have the same name:

1) When we subclass an object to override internal behavior, presenting
the same version of the object.

2) When we want to introduce multiple versions of objects either via
subclassing or completely separate classes if differences are large
enough to warrant that.

There was a rough plan to support this, however we're currently very
broken. The code before this patch would happily track every one of the
objects with the same name. However, in the case where we see the same
version during 'object registration', we should actually always take the
newest one that we see, replacing the old one.

Also, throughout nova, we have code such as:

from nova.objects import instance as instance_obj

inst = instance_obj.Instance.<....>

This means we're always using the base object, which may or may not be
the correct ('newest') one.

This patch fixes the object registration and adds an attribute to the
'nova.objects' module for every object that is registered, setting the
attribute to the newest version we see.

This will allow us to drop a number of object module imports in favor
of simply importing nova.objects. The example above would become:

from nova import objects

inst = objects.Instance.<....>

Because the object registration ensures objects.Instance is the newest
version, we'll be golden.

Partial-Blueprint: object-subclassing

Change-Id: I04694ecd40e0d4ec40a87d319f2e689060b11651
Fix nova/compute direct use of instance module objects

This switches the nova/compute code to use nova.objects.Instance* vs
nova.objects.instance.Instance* so that subclassing of objects will work
properly.

Partial-Blueprint: object-subclassing

Change-Id: I941ebb14caeb29fe55bb93bccaf95fd158024d34
Do not wait for neutron event if not powering on libvirt domain

When resizing/migrating a stopped instance, the power_on flag is False
in _create_domain_and_network so virtual interfaces are not plugged and
we are waiting for an event callback from Neutron that won't happen.
This leads to an eventlet timeout and subsequent attempt to destroy the
non-running domain, which results in a libvirtError.

This change just adds the power_on flag to the list of conditions for
determining if we should wait for an event callback from Neutron.

Closes-Bug: #1321872

Change-Id: Id87ed125db8b1e807b7fa0d99180d0820edbed3e
Merge "Do not wait for neutron event if not powering on libvirt domain"
Merge "Register objects in more services"
Merge "Address issues with objects of same name"
Merge "Fix nova/compute direct use of instance module objects"