add combineLatestOrDefault operator like combineLatest but suited for providers
Created by: sqs
The new combineLatestOrDefault RxJS operator is like combineLatest, with a few differences in behavior that make it suitable for "getting results from providers":
- it does not block on the slowest provider before making its first emission (outcome: users perceive the app is slow)
- it never completes if the source observables array is empty (outcome: easy to make a mistake here and forget to check for array length === 0)
This replaces a workaround for the first issue that was merged in #1259. It removes hackiness and flakiness (arbitrary sleeps) from the tests that that hack required.
There is no expected behavior change for users in this PR.