attach_volume method has inconsistent return value: if we pass it
wait=True, the methods returns a volume object but if we pass it
wait=False it returns a volume_attachment object.
We should always return a volume_attachment object.
Also don't try to be too clever in pre-emptively refusing to detach
a volume that we think is not attached. It prevents the following
calls, which looks good without knowing Shade internals:
server = create_server(...); volume = create_volume(...);
attach_volume(server, volume); detach_volume(server, volume)
Change-Id: Ia1da29ec6286dbbed0a77d6abcf89e95a055ac9a