rewrite OperationRetry and add unit test to address issue #879

I rewrote the OperationRetry class from first principles if you like. Less obfuscated to my eyes and doesn't use CompositeSubscription.add 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