Don't call `pull` until the stream has started.

Fixes #31. By delaying any calls to the `pull` constructor option until the promise returned by `start` fulfills, we allow any asynchronous open steps to be coordinated with further reads from the opened resource.

If you don't return a promise, that counts as an immediately-fulfilled promise for `undefined`. So this imposes a minimum one-microtask delay on starting the flow of data from a stream. I am not sure that is OK. But it seems better than return-type polymorphism, or introducing an "opening" state and a fourth `transitionToOpen` parameter to `start`.