Rename DependenciesMap to DependencyGraph
Refactor dependency resolution

The biggest change is the removal of reversed order from the
dependency resolution. This makes the logic quite a bit easier
to understand.
The order is only reversed right before the containers are used.
This change would produce sub-optimal reverse orders for targets
with missing dependencies, so additionally it introduces the
notion of a forced order, yielding the same results as before.
At the same time, this  allows the user to execute targets that
can't be satisfied but don't need to (status, provision and push).