RxScala: Add backpressure support

As per #1603.

/cc @headinthebox, @samuelgruetter
@benjchristensen could you take a look at this example? I use `Scheduler` to make the `Producer` simple. Any suggestion on how to write a `Producer`?

Here I also have some concern. Without backpressure, we can use `subscribeOn` to make sure the work of an `Observable` will always be done in some `Scheduler`.

However, with backpressure, the work of an `Observable` will move into `Producer.request`. But `Producer.request` can run in different `Scheduler`s. Does it mean we need to use an explicit `Scheduler` like this example to make sure the work will always be done in some special `Scheduler`? This is very important for rxjava-android, like always running network requests in IOScheduler but running UI updates in AndroidSchedulers.mainThread().