recursive scheduling in RxScala

This PR adds a `scheduleRec` method to the `Scheduler.Worker` trait to make recursive scheduling more convenient in Scala. This issue is raised in #1348.
`action: => Unit` cannot support something like "repeat an action 10 times". Because `worker.unsubscribe()` will cancel all scheduled work, we cannot use it to abort the recursive schedule but let the running actions finish their work.
I prefer `def scheduleRec(f: => boolean): Subscription`. Here the value of `f` means if we want to stop  the recursive schedule:
```scala
  def scheduleRec(f: => Unit): Subscription = {
    def work: Unit = {
      if (f && !this.isUnsubscribed) {
        this.schedule(work)
      }
    }
    this.schedule(work)
  }
```
/cc @headinthebox @samuelgruetter