implement and document Pipelines, see #3174

    - heavily inspired by spray.io.Pipeline
    - functional style: a stage returns the resulting commands and
      events, which makes it impossible to mess with the pipeline from the
      inside
    - object allocations are optimized away for emtpy and 1-elem results
    - added type-safety, verifying that stages match up
    - management commands “from the side” for configuration or async events
    - full Java API and docs

also add @throws declaration to actor life-cycle hooks, see ticket 3188