Merge many fixes

Contains the PR #1893 and a possible fix for the premature RxRingBuffer unsubscription and NPE.
The code in #1845 was triggered by such concurrent invocation. Even if we don't let the upstream unsubscribe, downstream may unsubscribe at any time and one has to clean up the InnerSubscribers eventually. In this PR, the release is only triggered by a terminal event from an InnerSubscriber which doesn't run concurrently, but downstream unsubscription from a take(n) would not trigger any release. I have ideas how to re-enable it, but preventing the use of queue and release at the same time requires serialized access.