Merge with Serialize

- concurrency unit tests
- handle Observable that emits onComplete multiple times
Merge pull request #973 from benjchristensen/merge-handle-bad-observable

Merge with Serialize - Handle Bad Observables
TestSubject, TestObserver and TestScheduler Improvements
Merge pull request #974 from benjchristensen/testing

TestSubject, TestObserver and TestScheduler Improvements
GroupBy & Time Gap Fixes

I ran head-on into the "time gap" (https://github.com/Netflix/RxJava/issues/844) issue while working on a stream processing use case (and new 'pivot' operator I'm writing).
This is a solution. It's still not ideal as the Javadocs of BufferUntilSubscriber mention, but this is working better than nothing and does not require blocking threads.
A better solution will come as part of the back pressure work where BufferUntilSubscriber will evolve to have a bounded buffer.
Merge pull request #975 from benjchristensen/groupBy-fixes

GroupBy & Time Gap Fixes
Compilation Fix
Fix Unit Test Assertion