Fix ObserveOn and add ParallelMerge Scheduler overload

- ObserveOn was not correctly recursing when the source was async. It would create a new scheduler (i.e. a new thread) each time.
- Also added unit tests to ParallelMerge