Introduced withLatest() operator (src, tests, docs)

Related to #335 and https://github.com/ReactiveX/RxJava/issues/405

I wanted to implement `a.withLatest(b, resultSelector)` as just 

```
b.map(y -> hotA.map(x -> resultSelector(x,y))).switch()
```

but I needed publish().refCount() in order to get `hotA`, and publish/refCount are not usually packaged in the same RxJS dist flavor as combineLatest and withLatest, so I just implemented withLatest with a state machine similar to combineLatest's state machine.