Immutable requests

This should be a drop-in replacement for how requests are build right now. So, hopefully it won't break anyone's code (and should support changing `import dispatch._` with `import dispatch.immutable._`