pipelet.js:
  Pipelet..:
    - add_source() and remove_source(): use only lower-level function that can be redirected

    - _add_source():
        - add trace when inserting a union
        - allow redirections by using the same low-level functions as add_source() and remove_source()

    - _add_source_destination() and _remove_source_destination(): no longer call lower-level function wit query

    - _add_destination() and _remove_destination(): no longer have a query parameter, no longer updates source query tree

    - implement _add_source_query() and _remove_source_query() to setup and tear-down subscriptions for destination

    - _fetch_source_destination():
      - uses _is_lazy() and test options to decide to proceed
      - allows filtering on Array source
      - allows removal of data from Array source

  Encapsulate:
    - redirect _add_source_query() and _remove_source_query() to null

  Controlet:
    - redirect _add_source_query() and _remove_source_query() instead of _add_source_destination() and _remove_source_destination()
    - _fetch_source_destination(): fix typo