Create needle.request( ) function

This is not a big change. I just need more control over how to send the request through needle.
But it would be nice if you could let users do that.