Refactor wait_* methods. Fallout from GRIND-7.

Allow them to be applied on any Openstack resource, so specifically we can use
them as well on Cinder volumes.

Then robustify the volume workflow by waiting for all the transitions to take
place.

Change-Id: Ie05a9bb7b7011c128785e60526fda782cfe53e82