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.
Yes, the undefinedSouce pattern is nice. It would be nice to have something like:

    val pluggableIn = b.undefinedSource
    pluggableIn ~> f1 ~> ... 

i.e. naming the plug-in point. And then later

    pluggableIn(realIn)

The problem with this is that unlike the merge/bcast vertices which are scoped to the builder, this would need to escape the scope somehow. Not sure If we can do it -- maybe someone else has a better idea.