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.
Should we check here if this flow has already been added to the graph with UndefinedSink? Because if we don't, it will not be possible to discriminate between these two flows after addition. Hence it will not be possible to attach one sink to one flow and a different sink to another.

Same situation with flow and UndefinedSource below.