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

Implemented a new overload for Retry operator that accepts a `Func1<Observable<Notification>>, Observable<?>>` for determining retry behavior and reimplemented the existing retry overloads in terms of the new overload. I intend for this change to allow for implementing clean-up logic on notification of a failure prior to the retry behavior as well as expressive functional retry logic. 
Why is this needed for your changes, but has never been needed elsewhere?