Port volumes swap to the new API-v3

This ports the additions in the API from the change-Id
Iaace71f46acd33cf1531d953d569c0b6d0bbe680.
Since volumes API wasn't selected to port some changes were made to make volumes
swap fit into extended_volumes, the request will now be done like:
    PUT v3/servers/<server_uuid>/action
and the request body will be something like:

{ 'swap_volume_attachment': {
                            'new_volume_id': <volume_id>,
                            'old_volume_id': <another_volume_id,
                          }
}

Also adds expected_errors decorator and more unittests

Related to blueprint volume-swap
Related to blueprint nova-api-v3

Change-Id: Ia3a9efd68ec52a7bfe8cbe0a6518dd91527f8903
Merge "Port volumes swap to the new API-v3"