add OperationToOperator and unit tests and overload for lift method

I found myself using this method a lot to easily create an Operator so that I can use the lift method. For example:

Suppose I want to use lift to perform a concat on a sequence of observables followed by count:

```java
private static <T> Func1<Observable<Observable<T>>, Observable<Integer>> concatCount() {
    return new Func1<Observable<Observable<T>>, Observable<Integer>>() {
        @Override
        public Observable<Integer> call(Observable<Observable<T>> source) {
            return Observable.concat(source).count();
        }
    };
}
```

I can then use the suggested lift overload with the function above:

```java
source.lift(MyClass.<Integer> concatCount());
```

or I could have made an Operator form of it (especially if its component operations don't have readily available Operator forms to chain together):

```java
private static <T> Operator<Integer, Observable<T>> concatCountOperator() {
    return OperationToOperator.toOperator(MyClass.<T> concatCount());
}
```