Clarify the compute API is_volume_backed_instance method

Update the is_volume_backed_instance to be more robust and
check for volume_id or snapshot_id to see if a block device
mapping is really backed by a cinder volume. As per the blueprint
https://wiki.openstack.org/wiki/BlockDeviceConfig#snapshot_id_and_volume_id
I used the volume_id to do this as seems consistent with the
rest of the tests.

Add unit test to enforce this.

The motivation behind this is that we rely on this method at HP and
the test ServersActionsAllJsonTest.test_server_create_image
in nova.tests.integrated.test_api_samples highlighted weakness in
this method and where it could fail now that every instance has an
associated block device mapping for its root device.

Change-Id: Ia4b623a94d0285d8aeb97e9fd72a63f5f87efe7a
Sync rpc from oslo-incubator.

The most significant change included here is:

6d42ced Remove the amqp_rpc_single_reply_queue option from Havana

Change-Id: I4322a8dbfe9b666cd741c3c520a192296c56cd7b
Merge "Clarify the compute API is_volume_backed_instance method"
Merge "Sync rpc from oslo-incubator."