Increasing timeout

Using low timeout values causes non-determinism in some build environments.
Added overload for retry to accept a Func1<Obs, Obs>
Removing the Retry with predicate overridde
Updating doc with img to new retry.fn1 marble diagram
Combined retry and repeat in one operation.
Took the idea further to also allow the notification function control the timing of the retry/repeat.
Fixing OperatorRedo behavior. Made OperatorScan more lazy.
Rearranged the code so that observable returned from the func has complete control over when the source observable is subscribed.
Made scan less lazy.
Changed retry and repeat notification handlers to return Observable<?>
Fixing finite redo tests
Generalized the signature on the redo infinite const func1
Removed funcky startWith from redo operators
Readding RetryWithPredicate
Renaming and cleaning up documentation