=str #15755 #15756 source and sink

sorry, deleted the old branch by accident, previous discussion was at #15786 
It seems that they naturally fall to two groups. One contains `SubscriberSource`, `PromiseSource`, etc. These can consume elements.

Other group is all the other which have elements already (or will have eventually): `IterableSource`, `IteratorSource`, `FutureSource` etc.