Added `Observable.timeout` wrappers to scala adapter

Added the four timeout methods on Observable in the Scala adaptor. Note
for the java/scala type interop:
http://stackoverflow.com/q/20912151
Implemented the rest 'merge' overloads
Added unit tests
Improve Error Handling and Stacktraces

The stacktraces were a mess when onError failed or was not implemented and unsubscribe also failed.
That is a far edge case and means code is broken and breaking the Rx contracts … but that’s just when we need clear stacktraces.
The CompositeException and SafeObserver class now do a dance and wire together a causal chain to provide a stacktrace that can identity all the points of error.
Also standardized and simplified the RxJavaPlugin.onErrorHandler while working in the vicinity.

This came about after I was asked to help debug a problem and couldn’t do it by looking at the thrown exception, I had to use a debugger and step through.
Merge pull request #730 from benjchristensen/unsubscribe-error-handling

Improve Error Handling and Stacktraces When Unsubscribe Fails
Replaced 'Thread.sleep' with 'CountDownLatch' to fix the flaky test failures
Merge pull request #720 from hura/master

Added `Observable.timeout` wrappers to scala adapter
Merge pull request #731 from zsxwing/flaky-unit-tests

Replaced 'Thread.sleep' with 'CountDownLatch' to fix the flaky test failures
ported groupByUntil function.
Buffer with Observable boundary.
Delay with subscription and item delaying observables.
Window with Observable boundary.
MergeMap with Iterable and resultSelector overloads
Added event-merger overload
Publish and PublishLast overloads
Added variance to selector functions
Debounce with selector
Timeout with selector overloads
Zip with iterable, removed old aggregator version and updated tests
Build with Gradle 1.10.

Required that the IDE plugins also be applied to the root, because of the improved Scala support with the IDEA plugin.