rewrite OperationRetry and add unit test to address issue #879

I rewrote the OperationRetry class from first principles if you like. Pretty clear to my eyes and doesn't use a single CompositeSubscription (method add()) for the lifetime of the retry which was the cause of bug #879 in the first place. Unit tests pass though I'll be glad of some peer review. 
Cheers. Dave