`request.pipe` better handles proxying (xhr) requests (in general).

As noticed in work (in another branch):

When directly handling the body object via the `request` callback
method, handling some use cases (ex. raw streams) are being returned
as corrupted content (ex. a png image).

The pipe method is ideal, as it allows the proxy to be done without
manually dealing with encoding, etc, as well as ending the response.

However, only when there is no callback given should pipe be used, as
proxies like the jsonp xhr handler (when running on file:///) still
needs to reply with different content.

Note: It _may_ be that `request` is at fault here, or just missing a
feature. Since pipe seems to be the best thing to use (in
retrospect), it seems practical and most time considerate to fix here,
and look to investigate if it is an issue later on (if possible).