Part of ENG-4501
If upload fails at some point we want to revoke holders for blobs so they don't hang around forever. For this purpose I've added a general purpose Defer struct that will defer a given command until an end of scope. If everything succeeds we cancel them (=> don't revoke the holders for blobs).
Depends on D8966