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.
Add a basic rollback accumlator test.
Use a default sqlite backing using a taskflow file.
Add comment to why we accumulate before notifying task listeners.
Syncing with master