+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. 
here we have to check that any of inputs have elements to process. do you have any idea how to do it simply?