Commentary on constructing an Observable

- I would like to remove the no-arg constructor but not ready to pull the trigger
Prevent direct instantiation of BlockingObservable via no-arg constructor

- also questioning why to allow extending this and would like to make it a private constructor
Common approach for IllegalArgumentException on subscribe methods

As brought up in https://github.com/Netflix/RxJava/issues/278 there were inconsistencies in how arguments were being validated on subscribe methods.

All arguments to subscribe are now validated correctly at the beginning of method invocation and IllegalArgumentException thrown if null arguments are injected.

According to Rx Guideline 6.5 a null argument is considered "a catastrophic error occurs that should bring down the whole program anyway" and thus we immediately throw. A null argument should be caught immediately in development and has nothing to do with subscribe invocation which is what guideline 6.5 is talking about (since a null Observer can't have onError called on it anyways).
Throw if no onError handler specified

https://github.com/Netflix/RxJava/issues/198

As per Rx Design Guidelines 5.2:

 "when calling the Subscribe method that only has an onNext argument, the OnError behavior will be
 to rethrow the exception on the thread that the message comes out from the observable sequence.
 The OnCompleted behavior in this case is to do nothing."

A new OnErrorNotImplementedException was created so it is explicit as to where the exception is coming from and why.
Merge pull request #287 from benjchristensen/error-handling-and-validation

Error handling and validation