[review-only] OperatorSynchronousUnsubscribe

Possible solution for the problem discussed here https://github.com/ReactiveX/RxAndroid/issues/3 and here https://github.com/ReactiveX/RxAndroid/issues/12.

`OperatorSynchronousUnsubscribe` ensures that a `Subscriber` passed to `Observable.subscribe` won't receive any notifications after `Subscription.unsubscribe` is called. It also releases a reference to prevent memory leaks.

In or order to work properly `OperatorSynchronousUnsubscribe` **must** be the latest lifted operator:

```java
final Subscription subscription = ViewObservable.clicks(button, false)
        .observeOn(AndroidSchedulers.mainThread())
        .lift(new OperatorSynchronousUnsubscribe<View>())
        .subscribe(new Action1<View>() {
            @Override
            public void call(View view) {
                Log.d("RxAndroid", "Button Clicked");
            }
        });
```

/cc @mttkay 
You can change `Subscriber<? super T>` to `Observer<? super T>`. Then you can use `rx.observers.EmptyObserver` without adding `EmptySubscriber`. BTW, because `Subscriber` is usually stateful, I won't make a `Subscriber` static.