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
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