function mergeSources (streams) {
  return new Merge(reduce$2(appendSources, [], streams))
}
This implements fusion/flattening for merge.  It will
fuse adjacent merge operations.  For example:
- a.merge(b).merge(c) effectively becomes merge(a, b, c)
- merge(a, merge(b, c)) effectively becomes merge(a, b, c)
It does this by concatenating the sources arrays of
any nested Merge sources, in effect "flattening" nested
merge operations into a single merge.