Fix the compose covariance

Changed the return type of `compose` from `Observable<? extends R>` to `Observable<R>`. The reason is that if returning `Observable<? extends R>`, the following codes won't work in Java:

```Java
        Observable<String> o1 = Observable.from("s1");
        Observable<String> o2 = o1.compose(new Transformer<String, String>() {
            @Override
            public Observable<? extends String> call(Observable<? extends String> t1) {
                return Observable.from("s2");
            }
        });
```
we have to write:
```Java
        Observable<String> o1 = Observable.from("s1");
        Observable<? extends String> o2 = o1.compose(new Transformer<String, String>() {
            @Override
            public Observable<? extends String> call(Observable<? extends String> t1) {
                return Observable.from("s2");
            }
        });
```
Because we cannot assign `Observable<? extends R>` to a `Observable<R>` variable, we should avoid to return `Observable<? extends R>`, otherwise the API will be inconvenient.