Initial implementation of request.post + tests

#### What's this PR do?
This provides an initial implementation of retrying POST requests. It's a wrapper around the Node.js request module, so usage should look pretty similar.
```
var RequestRetry = require('node-request-retry');
var requestRetry = new RequestRetry();
requestRetry.post(url, data, function(err, response, body) {
  ...
});
```

#### Where should the reviewer start?
###### index.js
The `.post` method here sets `this.exec` as a closure with reference to `url` and `data`. We provide our own internal `_callback` and bind the passed in `callback` to it. The request is then executed with `this.exec()`.

When the request returns, our internal `_callback` is called which then passes on the info to the original caller's `callback`. If an error is returned of some sort, we attempt to retry up to `MAX_RETRIES` using `setTimeout`. We're able to use `this.exec` in `setTimeout` because it's got references to `url` and `data`.

#### How should this be manually tested?
For now you can just run `npm test`. We'll see it in practice once we roll it into https://github.com/DoSomething/ds-mdata-responder.

#### Any background context?
This is the result of trying to solve for https://github.com/DoSomething/ds-mdata-responder/issues/291

cc: @tongxiang 
and nice! memory-handling. I need to do this.