Unfold Small data type and combinators for building unfold-based streams over stack safe monads. See tests for examples.