=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.
Hmm, actually this is wrong: a `Source[AnyRef]` should not be a subtype of `Source[String]`, that would break things unless I am mistaken. If covariance does not work out elsewhere (it would locally) then we need to make it invariant.