Added LifecycleObservable binds

This is the first half of the puzzle that is #12. It provides two main facilities:

- `LifecycleObservable.bindUntilLifecycleEvent()` lets you specify an exact point in a lifecycle to unsubscribe at.

- `LifecycleObservable.bindActivityLifecycle()` and `bindFragmentLifecycle()` which make a best effort guess at when you want a subscription to end, based on the lifecycle state.

Implementation detail: `OperatorSubscribeUntil` acts like `takeUntil()`, except that it unsubscribes instead of calling `onComplete()` when the conditional `Observable` emits an item.

If this works then we can later figure out how to create these `Observable<LifecycleEvent>` streams.
I just commented upon the code above: there is no distinction between `null` and `ATTACH`, they both end up throwing an exception. If you want to highlight what is supported and what is not you might do as follow:

```java
   switch (lastEvent) {
       case CREATE:
           return LifecycleEvent.DESTROY;
       case START:
           return LifecycleEvent.STOP;
       case RESUME:
           return LifecycleEvent.PAUSE;
       case PAUSE:
           return LifecycleEvent.STOP;
       case STOP:
           return LifecycleEvent.DESTROY;
       case ATTACH:
       case CREATE_VIEW:
       case DESTROY_VIEW: 
       case DESTROY:
       case DETACH:
           throw new IllegalStateException("Cannot bind to " + lastEvent + " for an Activity.");
       default:
           throw new IllegalStateException("Cannot bind to Activity lifecycle when outside of it.");
   }
```