function MapSink (f, sink) {
  this.f = f;
  this.sink = sink;
}
Create a mapped source, fusing adjacent map.map, filter.map,
and filter.map.map if possible
@param {function(*):*} f mapping function
@param {{run:function}} source source to map
@returns {Map|FilterMap} mapped source, possibly fused