delay opening of XHR object until next tick

The use case for this is to allow attaching event listeners to `"progress"` events. Listeners that are attached to this event *after* open has been called (in `readyState === 1`) are ignored, so receiving progress events with requests made via `require('http').request` was impossible.