Async.retry

This is an alternative to https://github.com/caolan/async/pull/306 that implements `async.retry()` using `async.serial()` under the covers. Includes documentation and tests.