function flatMap (f, stream) {
  return mergeMapConcurrently(f, Infinity, stream)
}
Map each value in the stream to a new stream, and merge it into the
returned outer stream. Event arrival times are preserved.
@param {function(x:*):Stream} f chaining function, must return a Stream
@param {Stream} stream
@returns {Stream} new stream containing all events from each stream returned by f