Use rollback accumulator and remove requires()/provides() from being functions

Use a new rollback accumulator to collect which tasks need to be rolled back
and use that in the ordered workflow code. Move the usage of provides/requires
as functions and just let them be attributes of the flow objects.