Refactor toMap

A PR to refactor `toMap`.

There is a breaking change in this PR: 
* Remove `def toMap[K, V] (keySelector: T => K, valueSelector: T => V, mapFactory: () => Map[K, V]): Observable[Map[K, V]]`

The other changes are still source compatible and binary compatible.
Did you try if you can define a default argument of `v => v` for valueSelector? Not sure if this can work because scalac would have to infer from this that T must be the same as V.