Add make_completed_future to async_utils

Instead of keeping this three lines of code inside one of executors,
we move them to special utility for farther re-use.

Change-Id: I8f0ed76737fe29ad9492260cb84b66d09ec07f70
Graph action refactoring

* get rid of dependency counter in graph action:
  analyze graph directly instead when we need to determine nodes we
  need to execute or revert next;
* move graph interpreting to separate class, GraphAnalyzer:
  instead of inheriting this code from base graph action we now use
  composition;
* get rid of direct dependency of graph action on engine.

Relates to blueprint smart-revert
Co-authored-by: Ivan A. Melnikov <imelnikov@griddynamics.com>
Change-Id: Ib6499d2f2d5b568d7f2a45af3c5ed6d8d9ace39b