Fix the issue that GroupBy may not call 'unsubscribe'
Propagate onError to all groups
Add a new state of `terminated` to fix the race condition of `errorEmitted`; Add more comments.
Update as per review
Merge pull request #1967 from zsxwing/fix-groupby-unsubscribe

Fix the issue that GroupBy may not call 'unsubscribe'
Fixed wrong subject use in test.
Merge pull request #2053 from akarnokd/ReplaySubjectBoundedFix1218

Fixed wrong bounded ReplaySubject use in test.
Added Operator switchIfEmpty, like defaultIfEmpty but subscribes to and emits the items in an Observable if the source is empty