Add retry.dart and retry_test.dart to quiver.

A first attempt at adding retry.dart and its corresponding retry_test.dart to quiver-dart. Comments *very* welcome.
Can the length of delay depend on the kind of error? E.g. if it's 404 I might want to wait longer compared to say 500. If so, the signatures of `OnErrorFunc` and `RetryDelayFunc` become so similar that perhaps we only need one function. If the function returns `Duration` we retry, otherwise we treat the result as the final error object. It seems similar to how you treat `null` as an instruction to keep trying. What do you think?