Netflix/RxJava — pull request #857 by benjchristensen (2014-02-12 00:37:45+00:00)
Title: Change Lift to use rx.Observable.Operator

The generics insanity has to stop.

This pull request is a result of @abersnaze and I continuing to fail to make generics work with this signature:

```java
Func1, Subscriber>
```

It all fell apart while trying to do things that needed the equivalent of:

```java
Func1, Subscriber>
```

... and other such variants.

With this change I can also finally get the `OperatorMerge` generics to work.

Thus, the `Operator` type exists inside `Observable` just like `OnSubscribe` like this:

```java
/**
* Operator function for lifting into an Observable.
*/
public interface Operator extends Func1, Subscriber> {
// cover for generics insanity
}
```

This gives us imports like this:

```java
import rx.Observable;
import rx.Observable.OnSubscribe;
import rx.Observable.Operator;
```

I know it's not as pure as having `lift(Func1)` but this is far more usable.

```java
public Observable lift(final Operator bind)
```

If anyone has a different suggestion that still solves the generics issue please let me know.