=str #15755 #15756 First stab at input/output factories

* New naming based on Source and Sink

Some parts of this convoluted/wrong. Take a look and we can discuss.
In effect what you are saying is that any FlowMaterializer will have to know how to materialize an IterableSource. That is certainly another way to go, and it entails that we add an appropriate method to FlowMaterializer instead of doing the pattern match here.