Fix issue #1187 and #1196

This PR fixed issue #1187.

Although using `(action: => Unit)` will require the following odd codes when somebody wants to use `Function0` directly:
```Scala
  @Test def schedulerExample5(): Unit = {
    val worker = IOScheduler().createWorker
    var no = 1
    val subscription = worker.schedule(new Function0[Unit]{
      def apply(): Unit = {
        println(s"Hello(${no}) from Scheduler")
        no += 1
        worker.schedule(apply(), 100 millis)
      }
    }.apply(), 1 seconds)
    TimeUnit.SECONDS.sleep(2)
    subscription.unsubscribe()
  }
```
I think people rarely use `Function0` directly in Scala. 

So I chose `(action: => Unit)` finally. `schedulerExample4` is an more realistic example for recursive schedule.

This PR is a breaking change.