pipelet, emit(): return early when no event listener
pipelet: rename map_reduce() into dispatch(), and more API cleanup:
  - Rename map_reduce into dispatch, the reasons are:
    - map/reduce is more a term to describe a low-level functional programing how-to do
      something rather than what we want done.

    - map/reduce is associated with other well-known technologies that might confuse
      architects about what dispatch() does

    - Last but not least, I can remember using the terms dispatch and dispatcher for
      many projects I have worked on, over the last 20 years. I have never really found
      a better term and most importantly this is the first time I finally find an elegant
      solution to this very complex problem.

  - Remane parameters to improve API meaning.

  - Remove parameter branch from the branch_dataflow() function and provide it as 'this'
    context to branch_dataflow(). The benefits are:
      - Remove a global context probably dangerous from a functional programming standpoint
        and inciting users to use dataflows instead.
      - The branch is the actual entity that gets created when that function is called so
        it makes plenty of sense that it also become the context from a programming
        standpoint.

  - Improve documention, to show how Connected Sets can manage parralelism. Also improve
    the diagram and description to show how the branches controller is used for creation
    and tearing-down of branches.