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.
One good reason these are separate is because they are logically two different things. There are two separate args to start(), onError and retryDelay, because that permits all sorts of "mix-ins" of the provided "stock" onError functions (retriesInfinite(), retriesNone(), and the functions returned by makeRetriesMax(), makeRetriesLimited(), etc.) and the "stock" retryDelay functions (delayNone(), makeDelayFixed(), makeDelayRandom(), makeDelayBackoff(), makeDelayBackOffRandom(), etc.)

I suppose those onError and retryDelay behaviors could be combined in user-written functions, but that seems forced. These two things are not really the same thing.