Change swap_volume volume_api calls to use ID

Currently some volume_api calls in the swap_volume code pass a volume
dict rather than a volume ID. This patch fixes the issue. Also fix two
issues: (1) invalid reference to 'volume' which should be 'old_volume'
when passing arguments to VolumeUnattached argument prior to raising it
in the compute API, and (2) revert begin_detaching and reserve_volume
calls if swap_volume fails.

Change-Id: I9735ffbd1a4adc5250d41f837ad10bbf290cf193
Fixes: bug 1207356
Merge "Change swap_volume volume_api calls to use ID"