code: function filter(parent$, fn) {
    let newStream = fork$(parent$, value => (fn(value) ? value : undefined));
    parent$.listeners.push(function filterValue(value) {
      if (fn(value)) {
        newStream(value);
      }
    });
    return newStream;
  }
docs: /*
  provides a new stream that only serves the values that a filter function returns true for
  still a stream ALWAYS has a value -> so it starts at least with NULL