Storage: add methods to get all flow failures

Instead of caching all failures in engine we cache them in storage,
which is cleaner and more transparent.

Behavior change: if task failed, then flow was suspended, then
loaded again but without task with such name, such flow would be
reverted now in engine.run(). Previously, such flow could be run
normally as all data from not present tasks were ignored.

Closes-bug: #1251736
Change-Id: I64e99ca98cc7fd28957ac2468577d677641aebdc
Pass flow failures to task's revert method

Now when tasks are reverted, all flows failures seen so far are passed
to revert method as 'flow_failures' keyword argument, as a dictionary
task name => misc.Failure.

Closes-bug: #1246616
Change-Id: I81f8c10684d54aaf5c31bb3badb6afe4c949f680
Merge "Storage: add methods to get all flow failures"
Merge "Pass flow failures to task's revert method"