Pull-style lazy sequences and combinators on top of arbitrary monads (arrays, promises and even streams)