Added Operator switchIfEmpty

Like defaultIfEmpty but subscribes to and emits the items in an Observable if the source is empty.

Fixes #1878 
Here is a test:
```Java
    @Test
    public void testSwitchRequestAlternativeObservable() {
        final List<Integer> items = new ArrayList<Integer>();

        Observable.<Integer>empty().switchIfEmpty(Observable.just(1, 2, 3)).subscribe(new Subscriber<Integer>() {

            @Override
            public void onStart() {
                request(1);
            }

            @Override
            public void onCompleted() {

            }

            @Override
            public void onError(Throwable e) {

            }

            @Override
            public void onNext(Integer integer) {
                items.add(integer);
            }
        });
        assertEquals(Arrays.asList(1), items);
    }
```
And its output:
```
java.lang.AssertionError: 
Expected :[1]
Actual   :[1, 2, 3]
```
If you do nothing, `unsafeSubscribe(new Subscriber()...)` will request Long.MAX_VALUE.
See https://github.com/ReactiveX/RxJava/blob/3dc4a310cf0450b414d74afb64946b31d64a0a95/src/main/java/rx/Subscriber.java#L136