Merge many fixes

Contains the PR #1893 and a possible fix for the premature RxRingBuffer unsubscription and NPE.
> a parameter that specifies the ring buffer size

That's not an option. The point of how this all works is that a developer has no idea if backpressure will be needed or the size of what they're consuming. 

> Required for correctness

I understand that. The point I was making is that we should be looking for a correct approach that doesn't impact perf, and object allocation overhead is what killed merge originally.