+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. 
Yes, right now it depends on input orders. I though that it can be done after or with #15079. Before #15079 any solution will be partial and temporary.