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<? super R>, Subscriber<? super T>>
```

It all fell apart while trying to do things that needed the equivalent of:

```java
Func1<Subscriber<? super R>, Subscriber<? super ? super T>>
```

... 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<R, T> extends Func1<Subscriber<? super R>, Subscriber<? super T>> {
        // 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 <R> Observable<R> lift(final Operator<R, T> bind)
```

If anyone has a different suggestion that still solves the generics issue please let me know.