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.
"Keeping a reference to the wrapped Subscriber" is "implementing some functionality" for me, so this should be done by the RxJava core, and not be reimplemented by the RxScala adapter. I didn't try it out, but couldn't this make the design simpler?