Prototype of FlowGraph

Early prototype for discussing the way forward.
Before we start with the DSL sugar I would like that we express the functionality in terms of something similar to the raw addEdge methods.
From each starting point we can set `kind = DepthFirst` instead of `kind = BreadthFirst` if you prefer that.

Do you want DFS with all starting points combined? I'm not sure what that means?
When is it important to traverse in a specific order (apart from downstream-to-upstream), please give an example?