OperatorFilter Migrated to Lift Operator

- support synchronous unsubscribe now
Split Merge and MergeMaxConcurrent

- Splitting them allows clearer code and avoids use of queue for normal merge.
InterruptibleBlockingQueue

- used in MergeMaxConcurrent and ObserveOn
- allows for blocking onNext calls when full while still supporting unsubscribe.
Observable.nest()

Make this public so that operator chaining can use it.
Usage would be someObservable.nest().lift(f) for lifting a function that expects Observable<Observable<T>> such as `repeat`.
GroupBy Fixes

- There were bugs in the implementation, this fixes some of them. In particular, it was unsubscribing from the parent when all children were completed, and that would unsubscribe even if new groups were going to come.
- There are still problems related to `subscribeOn` and the "time gap" that are being played with. Unit tests related to that are still failing.
ObserveOn using InterruptibleBlockingQueue
IllegalStateException if Repeat receives an onError
Migrate from Deprecated Notification Constructors
Revert Observable.Range to support 0 for count.

It had been changed to only support >0, put it back to >=0
Revert to OperationMergeMaxConcurrent

The new OperatorMerge class still exists, but reverting this one.
I messed up the thread safety and don't have time to figure it out.
InterruptibleBlockingQueue.size()
More Parallal Unit Tests

- stressing it further while hunting down non-determism
Further TestSubscriber Functionality
Remove Stray Println
Comment Out "Time Gap" Tests on GroupBy

See https://github.com/Netflix/RxJava/issues/844
Merge pull request #847 from benjchristensen/groupby-and-friends

Various Changes While Fixing GroupBy