+str #16038 Create Source/Flow/Sink from partial flow graphs

Fixes #16038
It's used in ` GraphFlow.scala`

For example:
```
val (newGraph, nOut) = FlowGraphBuilder(graph) { b ⇒
  val (oIn, oOut) = gFlow.remap(b)
  b.connect(out, outPipe.connect(gFlow.inPipe), oIn)
  (b.partialBuild(), oOut)
}
GraphFlow(inPipe, in, newGraph, nOut, gFlow.outPipe)
```

Used to look like this:
```
val b = new FlowGraphBuilder(graph.graph)
val (oIn, nOut) = gFlow.remap(b)
b.connect(out, outPipe.connect(gFlow.inPipe), oIn)
val newGraph = b.partialBuild()
GraphFlow(inPipe, in, newGraph, nOut, gFlow.outPipe)
```

I think that the block version is clearer.