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.
The `Observable<LifecycleEvent>` should be a hot observable - so it won't always start with `ATTACH`. Hopefully it would start with wherever the Activity/Fragment are in the lifecycle when you call `bindLifecycle()`.

What's happening here is essentially the same idea as `bindUntilLifecycleEvent()`, only we're using the lifecycle to determine what "until event" should be. I couldn't figure out a clearer way to say "take the first item, map it, then compare it to the rest of the stream" than this.