Merge and Cleanup of #972

@akarnokd I have manually merged your changes (https://github.com/Netflix/RxJava/pull/972) and migrated from `Action1` to `Action0` as we discussed. 

Can you review what I did on top of your changes to make sure it's correct. It seems correct to me but there is some nuanced concurrency here (obviously, hence your fixes) and I would appreciate your validation.