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. 
In trying to track down a bug I wanted to see how many observers there where.