Refactor Subscriber to support backpressure when using lift and bug fixes

I found `tail` and `toXXX` didn't work after adding backpressure. To solve it, I have to change `Subscriber` to `abstract class` so that `Subscriber`s can be chained and call `request` properly.
What's we need to do is sending the subscriber.asJavaSubscriber to (the wrapped  Subscriber).asJavaSubscriber. We need to call the `rx.Subscriber(rx.Subscriber)` constructor: https://github.com/ReactiveX/RxJava/blob/1.x/src/main/java/rx/Subscriber.java#L47