Added an intermediate function which, if specified, is called on each error encountered

Added the ability to provide an optional intermediate function which is called after each error. This method can be useful for logging
or other operations between errors. By returning `false` you can cancel any additional tries.

```
var intermediate = function(err, tries, delay) {
    console.log(err);   // last error
    console.log(tries); // total number of tries performed thus far
    console.log(delay); // the delay for the next attempt
    return false;       // this will cancel additional tries
};

backoff(dns.resolve, 'chilts.org', intermediate, callback);
```