Convert to using dict style key lookups in XenAPI

Fixes bug 1030073

With instances being passed as dicts via the RPC API, uses of the instance
object should use dict style key lookups instead of attribute style
lookups.

Change-Id: Iefc0e403d440aada68b259ded457166ad10699fd
Remove ugly instance._rescue hack

The XenAPI driver would use _rescue to note when an instance was in
the process of being rescued. The existance of this attribute would
modify the 'name' property to append '-rescue' to the generated name.

Among the problems with it, it wasn't saved anywhere (with resulting
code to set it to False being unnecessary) and it led to "magic" code
(see instance.name) that was confusing without understanding the hack.

Change-Id: I1a91e4efdf69d4c1fba07658419f7bb30b733b5a
Explicitly send primitive instances via rpc.

This fixes a few bugs in recent no-db-messaging commits.  There were a
few places that I accidentally still used "instance" where I should have
used "instance_p", which is the instance converted to primitive types.

I noticed the problem looking at smokestack logs.  I saw a Qpid
traceback that indicated the problem.  As an interesting point, systems
using Kombu would not have seen this problem.  Kombu uses anyjson.  Our
jsonutils module sets anyjson to go through jsonutils, which will
automatically to jsonutils.to_primitive() if needed to serialize an
object.  Qpid doesn't do json serialization, so it will blow up if it
hits a non-primitive type.  Yay for testing multiple different
configurations to find problems.

Part of blueprint no-db-messaging.

Change-Id: I3487195110572b7ae9586cfcc618ab7ab28d5017
Send a full instance in rebuild_instance.

Change the rebuild_instance method of the compute
rpc API to take a full instance over rpc instead of just
the instance UUID.  This cuts down on database access needed
by nova-compute.

Part of blueprint no-db-messaging.

Change-Id: I21647a5a5cbf71a2c498f6fee2e4adbe30b8f2ea
Send a full instance in remove_fixed_ip_from_instance.

Change the remove_fixed_ip_from_instance method of the compute
rpc API to take a full instance over rpc instead of just
the instance UUID.  This cuts down on database access needed
by nova-compute.

Part of blueprint no-db-messaging.

Change-Id: Iee0daf068be9814ef0ba06a69111a45a2e198cbb
Send a full instance in remove_volume_connection.

Change the remove_volume_connection method of the compute
rpc API to take a full instance over rpc instead of just
the instance ID.  This cuts down on database access needed
by nova-compute.

Part of blueprint no-db-messaging.

Change-Id: I1bd47b161acd7b6dfb03adb77d00a861f754e188
Send a full instance in rescue_instance.

Change the rescue_instance method of the compute
rpc API to take a full instance over rpc instead of just
the instance UUID.  This cuts down on database access needed
by nova-compute.

Part of blueprint no-db-messaging.

Change-Id: I559bd45a8dda4537f6f4a3b8d744095291c7f058
Send a full instance in reset_network.

Change the reset_network method of the compute
rpc API to take a full instance over rpc instead of just
the instance UUID.  This cuts down on database access needed
by nova-compute.

Part of blueprint no-db-messaging.

Change-Id: Iaae16e63da9d48d86e3bfc80f6c0cdb9f9bd3ddd
Send a full instance in resize_instance.

Change the resize_instance method of the compute
rpc API to take a full instance over rpc instead of just
the instance UUID.  This cuts down on database access needed
by nova-compute.

Part of blueprint no-db-messaging.

Change-Id: I5ed8707b2d018559ab4e983f8528dac8377783c7