Use new promise-based step stream. Streams use promises to manage
asynchronous iteration and backpressure, and also understand ES6
iterables/iterators.

Reduced API for initial version, but can be expanded as necessary.

Remove direct dependency on when.js-proper. Code depends on Promise
now, but explicitly loads when/es6-shim/Promise because the
performance of node's Promise on 0.11 is unacceptable.