Added Operator switchIfEmpty

Like defaultIfEmpty but subscribes to and emits the items in an Observable if the source is empty.

Fixes #1878 
As @akarnokd said, you need to override `setProducer` here, such as
```Java
            @Override
            public void setProducer(final Producer producer) {
                child.setProducer(new Producer() {
                    @Override
                    public void request(long n) {
                        producer.request(n);
                    }
                });
            }
```
So that `child` can be set to the new Producer.