Reimplementation of Concat, improved handling of Observable<Observable<T>>.

The old version required all of the Observable<T>s to be generated and buffered
before the concat could begin.  If the outer Observable was asynchronous, items
could be dropped (test added).  The new version passes the test, and does the
best job I could (after examining several possible strategies) of achieving
clear and consistent semantics in accordance with the principle of least
surprise.
Incorporate review feedback.

Also restore the errant change to settings.gradle.
Merge branch 'upstream' into issue202
Rename Subject to PublishSubject
Introduce Subject as analogue to RX ISubject
Implement RepeatSubject
Extract UnsubscribeTester to top level
Beef up UnsubscribeTester
Beef up UnsubscribeTester some more
Add unit tests to PublishSubject
Merge branch 'master' into replay

Conflicts:
	rxjava-core/src/main/java/rx/operators/OperationTake.java
Resolve merge conflicts
Merge branch 'master' of git://github.com/Netflix/RxJava into issue202
Merge branch 'issue202' of https://github.com/abliss/RxJava into concat-merge
1.  Update javadoc on subscribe() blocking if observables are running on the same thread.
2.  Add test case with infinity observable.
3.  Add test case to unsubscribe() with all observables running in different thread (non-blocking).
Trying to extend the Scheduler interface according to the comments at
#19.
An unsubscribed AtomicObservableSubscription.wrap() unsubscribes its argument.
Playing with Subject and ConnectedObservable
Multicast implemented
Unit tests for multicast