decouple things a bit

I was trying to make request "[browserifyable](https://github.com/substack/node-browserify)" again, and I thought to myself it would be easier if I just used what I needed and took out everything else, which also probably causes problems in the "browserification". So I'm going to try to make a request fork that is more minimal and extendable, just like the ecosystem of leveldb modules that go on extending levelup.

I'm not going to make a pull request of this fork I'm making because it breaks `request`, but this is a checkpoint along that way, which I thought would be cool for request as well. It just decouples things a tiny bit, by putting components found in `index.js` in other files. It does not change the API and the tests are passing.