Currently we recover objects directly into position by deleting and then
overwriting the target object. This means that we lose the object if we
are recovering in multiple steps and we fail partway through.
This is also the last user of collection_move(), which we would like to
deprecate.
Instead, generate a unique temp object name (pgid, object version, snap
is unique), and recover to that. Use the existing temp object cleanup
machinery to throw out a partial recovery result.