API/SPI Combination + Contract Details and Examples

Based on discussion at https://github.com/reactive-streams/reactive-streams/issues/19#issuecomment-40952908 I propose merging this into master so as to move forward on these items:

- Combine API and SPI into a single API for both interop and direct usage
- Clarify contracts and behavior, particularly related to multi-subscribe/single-subscribe and multicast/unicast.

This supersedes https://github.com/reactive-streams/reactive-streams/pull/25 and will complete the discussions in https://github.com/reactive-streams/reactive-streams/issues/19, https://github.com/reactive-streams/reactive-streams/issues/24, https://github.com/reactive-streams/reactive-streams/issues/23 and https://github.com/reactive-streams/reactive-streams/issues/21.

The code compiles using sbt (I have updated the TCK as well). Running the 'test' task appears to do nothing (before and after these changes).

This is by no means a final proposal nor is it considered ready for final discussion, but it makes progress and allows us to move all of the conversations forward.

Known discussion points still include:

- naming of types (such as an alternate proposal at https://github.com/reactive-streams/reactive-streams/issues/19#issuecomment-40985962)
- whether a `Processor` type is needed https://github.com/reactive-streams/reactive-streams/issues/22

I'm sure there are many others...

Do we have enough agreement to merge this and continue discussing?