Added Operator switchIfEmpty

Like defaultIfEmpty but subscribes to and emits the items in an Observable if the source is empty.

Fixes #1878 
The issue with returning child here is that when the first Observable completes, and is empty, those downstream will see the subscription as unsubscribed, no?

 Also, backpressure won't work as parent is not what we are returning anymore so we won't see any requests, which then should be passed to the alternate.