function FilterSink (p, sink) {
  this.p = p;
  this.sink = sink;
}
Create a filtered source, fusing adjacent filter.filter if possible
@param {function(x:*):boolean} p filtering predicate
@param {{run:function}} source source to filter
@returns {Filter} filtered source