+str #15089 add flattening for streams: merge

I am trying to implement merge concatenation of streams described in #15089. 

This is my first PL with new functionality, so please point me to general issues need to be corrected.

What is done:
- fetching from first available substream
- simultaneous open substream limitation

What is not done:
- support of merging strategies. Now item fetched from the first available substream. Can be done after #15079

Open questions:
- when errors should be propagated?
- MergeAllImpl:19 looks ugly. Any ideas how to simplify this are welcome. 
Those do not really translate to this case -- I am not sure how to generalize those approach. I think you should safely ignore those tickets for now and make this simply a fair merge.