Add more operators to RxScala

The commits explain this PR.

In addition, the reason that I changed `window(closings: () => Observable[Any])` to `window(boundary: => Observable[Any])` is `window(boundary: => Observable[Any])` can support both two overloads `window(Observable[U])` and `window(Func0[_ <: Observable[_ <: TClosing]])` in RxJava.