Covers the TCK with tests of the tests and addresses multiple smaller issues

This PR covers the entire TCK with tests of "how the TCK fails", and multiple wrong mini-implementations of publishers / subscribers. The tests aim to verify that the test failures are actually helpful for implementers.

I have also fixed numerous smaller issues (1 race, 1 wrong method called in tests - would never fail as it promissed, multiple NPE errors avoided, and loads of usability improvements) - see comments in line (I hope github will carry over my comments on that commit to this PR).

This is (IMHO) really important to scrutinize and get in before for RC1 – please review guys!
Resolves #172 as well as multiple "the test is not helpful" or "the test can be racy" things.

I'm not sure about the current 3.17 tests, I have to revisit them again, but have to do some other things today.
Gradle won't update this. You likely clicked "yes" in the IDEA dialogue that asked if you wanted to change this.

On Mon, Dec 15, 2014 at 9:43 PM, Konrad Malawski <notifications@github.com>
wrote:

>>  distributionBase=GRADLE_USER_HOME
>>  distributionPath=wrapper/dists
>>  zipStoreBase=GRADLE_USER_HOME
>>  zipStorePath=wrapper/dists
>> -distributionUrl=https\://services.gradle.org/distributions/gradle-2.2-bin.zip
>> +distributionUrl=https\://services.gradle.org/distributions/gradle-2.2-all.zip
> Gradle must have decided to update this, I'll remove this file from this PR - no need to touch gradle things.
> ---
> Reply to this email directly or view it on GitHub:
> https://github.com/reactive-streams/reactive-streams/pull/174/files#r21818756