make gatherer.request's inputs and outputs consistent with those of request itself

When wrapping a function it's nice to provide the same API if possible, and it *is* possible in this case. Furthermore, exposing the response object will enable the fix for #52 to be resurrected.