+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. 
Instead of recalculating this every time, we should rather keep around the information which streams are availalble and which are not.