depoendancy: add Step.DependsOn and rework Workflow into a queue