Fixes: Scheduler and Merge

1) Scheduler overload with recursive support

Fixed while working with @headinthebox 

2) unsubscribe was not propagating to parent Observable on merge(Observable<Observable<T>>)

Found and fixed while working with infinite streams. Merge was correctly unsubscribing from all children which means it was always working when doing something like `merge(a, b)`, but it wasn't correctly unsubscribing if given a single `Observable<Observable<T>>`