Fix bug in `zipWithIndex` and set `zip(that, selector)` public in RxScala

* The function used in `zipWithIndex` is mutable, which make the Observable cannot be reused. Fixed it using `zip((0 until Int.MaxValue).toObservable)`.
* Make `zip(that, selector)` public and rename to `zipWith`. #1189

/cc @headinthebox, @samuelgruetter