Allow user to specify image to use during rescue - V2 API changes

This commit includes the V2 changes.
Making changes in v2 API to take an extra parameter rescue_image_ref
as part of the rescue action API.
If specified, this image_ref will be used to rescue the instance.
If the image is not specified, then the base image ref is used by
default.

Partially Implements: blueprint allow-image-to-be-specified-during-rescue

DocImpact

Change-Id: I985b21264841a6a18a66d19ccd41753f78576776
Don't overwrite instance object with dict in _init_instance()

If a compute service is started while it has an instance in task_state
REBOOT_STARTED or REBOOT_STARTED_HARD it will trigger an instance update
which will overwrite the instance object with an instance dict.  This
causes an AttributeError on the next line when instance.task_state is
referenced.  This seems like a simple oversight and should be switched
to using the instance.save method.

Change-Id: I44c3eab2c8821b66b0b9ef4696e56bd577ae8fed
Closes-Bug: 1309067
Remove utils.reset_is_neutron() to avoid races

If a unit test does not call utils.reset_is_neutron() when
it is complete, it may introduce a race condition because
the utils.is_neutron() value is cached to the old result.

This patch removes the utils.reset_is_neutron() and instead
makes sure that we never have a cached value for it.  It
also refactors _is_neutron out of vmwareapi.VMOps because
it cache the result unnecessarily.

Change-Id: I2440e308b00979b31c750513d14608808a295c33
Closes-Bug: #1309043
make ec2 errors not useless

The ec2 error log message on an unexpected exception doesn't
include the actual exception. From the best I can tell this is
because some time in the past the log message might also have
been returned to the user. However the current code builds the
user message completely separately.

We are tickling a bug on ec2 in the volumes stack that causes
"Unexpected KeyError raised", however without the stack trace it's
really hard to understand where this went wrong.

Change-Id: Ia0f9e6f957fa8788dc9e87631a10bc9631bb930b
Merge "Allow user to specify image to use during rescue - V2 API changes"
Merge "make ec2 errors not useless"
Merge "Remove utils.reset_is_neutron() to avoid races"
Merge "Don't overwrite instance object with dict in _init_instance()"