function iterate (f, x) {
  return new Stream(new IterateSource(f, x))
}
Compute a stream by iteratively calling f to produce values
Event times may be controlled by returning a Promise from f
@param {function(x:*):*|Promise<*>} f
@param {*} x initial value
@returns {Stream}