Option to inject the request

This PR gives the user an option for the user to inject their own `request` object into Octonode, instead of having to use the default one (that being `require('request')`).

At Gitter we've been using this to control the behaviour of Octonode in our own custom manner. We wrap the underlying request object in several additional layers which in turn delegate to the subsequent layer while modifying the behaviour of the request in some way. Sort of like a middleware.

For example, we have middlewares for dealing with HTTP 502 gateway exceptions. When we see these, we use an exponential backoff retry several times. We also detect when multiple pages of results are available, and fetch all the pages at once, returning the full result set to the caller.

When I have a moment to transliterate some of these middlewares from JS to Coffee, I'll be happy to donate them to octonode.