Added overload for retry to accept a Func1<Obs, Obs>

Rebase and clean up of #1326 while Aaron is at LambdaJam.
Curious, why marking this as final? It doesn't matter, but what does it buy us here?