Synchronize Observer on OperationMerge

fixes https://github.com/Netflix/RxJava/issues/200

This is necessary because by definition Merge is subscribing to multiple sequences in parallel and is supposed to serialize them into a single Observable.
Synchronization of Merge operator (fixes)

- return AtomicSubscription not MergeSubscription which I was accidentally still returning
- try/finally in unit test so threads are released even if assertion is thrown
Add tests to demonstrate bugs
Split Take and TakeWhile
Implement TrustedObservableTester.assertTrustedObservable()
Fix violations of the Observer contract.
take(0) subscribes to its source
Merge branch 'take-test' of git://github.com/johngmyers/RxJava into pull-212-take-merge
Small reorganization of code for OperationTake and TrustedObservableTester

- removed rx.testing package (if that's going to exist that means it's bleeding into something that should live in /src/test and beyond what works well for inner class testing)
- made TrustedObservableTester part of rx.operation package and an inner UnitTest class so it doesn't become part of the public API
Merge pull request #215 from benjchristensen/pull-212-manual-merge

Manual Merge of Pull Request #212
TakeWhile protect calls to predicate
Merge pull request #220 from johngmyers/takewhile-predicate

TakeWhile protect calls to predicate
Improve error handling of user provided Observers

https://github.com/Netflix/RxJava/issues/216
Protect subscribe/forEach implementations against user provided function failures

Related to https://github.com/Netflix/RxJava/issues/216

The new forEach unit test went into a deadlock prior to this fix.
Restrict identification of "internal" operators to only the rx.operators package

- based on discussion at https://github.com/Netflix/RxJava/pull/221
- don't wrap at AtomicObserver again
- anything outside of rx.operators will be wrapped
Merge pull request #221 from benjchristensen/issue-216-error-handling

Error Handling Improvements - User Provided Observers/Functions
Trying to fix non-deterministic test

- not sure of a way other than putting Thread.sleep in here to give time after each CountDownLatch triggers for the process scheduler to execute the next line of each thread

See https://github.com/Netflix/RxJava/pull/201 for more information.
Merge pull request #201 from benjchristensen/issue-200-merge-synchronization

Synchronize Observer on OperationMerge
Merge branch 'master' of git://github.com/Netflix/RxJava into issue202