Avoid long wait for volume detach in some tests

When we attach a volume to a server we are going to delete later, we
set ourselves up for having to wait for a graceful detach of that
volume from the server, which is what the API provides. That should
always work, but if the guest has crashed or become unstable, we may
end up waiting for it until we timeout and fail, even though the
end goal is to just delete the server right after. So, this adds a
flag to attach_volume() that effectively says "let this be cleaned up
when the server is deleted." We still make the detach call, but we do
not wait for it to complete. This allows nova to force things during
the server delete process and avoid us getting hung up.

Further, since deleting the server is an asynchronous operation which
returns to the API caller immediately, we could race to delete the
volume before nova has finished server delete, making it available for
deletion. So, this also changes our create_volume() cleanup to use a
special routine that checks to see if the volume is attached and if it
is, waits for it to become available before attempting to delete the
volume.

This bites us in the gate quite a bit, in the force-snapshot-on-live-
instances test scenario, which is what the referenced gate bug is
about.

Change-Id: I027789668d7d9aebcd0418d9a45801771f1eccbd
Related-Bug: #1939108
2 files changed