Stream API

Whilst single traversal is solved with move the other two issues I have are:

  1. Any part of chain can terminate. EG an iterative solution that converges, termination is only known part way down the chain.
  2. Cannot pass errors along the chain and terminate the iteration on error.