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.
> But the rx.Subscriber(rx.Subscriber) constructor is protected, so that doesn't work. But can we use rx.Subscriber.add?

Subclasses can call it. I think it's better to follow the RxJava's pattern.