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. 
The usage of this class does not match the conventions used in `Observable` or the implementations of other operators.

If using `OnSubscribe`, see `OnSubscribeFromIterable` and `OnSubscribeRange`. If using `lift` then all that start with `Operator*` are examples.

Inside `Observable`, it should use `create` or `lift` to register the operator, not static factory methods in this class.