function EventStream(filter, apply, receive) {
    this.id = ++STREAM_ID;
    this.value = null;
    if (receive) this.receive = receive;
    if (filter) this._filter = filter;
    if (apply) this._apply = apply;
  }
Models an event stream.
@constructor
@param {function(Object, number): boolean} [filter] - Filter predicate.
  Events pass through when truthy, events are suppressed when falsy.
@param {function(Object): *} [apply] - Applied to input events to produce
  new event values.
@param {function(Object)} [receive] - Event callback function to invoke
  upon receipt of a new event. Use to override standard event processing.