IObservable<T> should never return null

(This PR is based on #135, start reviewing at "Give specs Platform flags")

Similar to #136, returning a value of `null` is never useful and often is very difficult to debug. Consider the following code:

```cs
someMethodThatIsMocked.GetAnObservable()
    .Where(x => x > 5)
    .Subscribe(x => Console.WriteLine(x));
```

Instead of seeing, "Oh I need to mock GetAnObservable", you'll get a crazy, 30-line stack crash deep in Rx. 

### Why is this based on #135?

Starting with .NET 4.5, `IObservable<T>` is built into mscorlib, so we can add this without requiring a dependency on Rx or `System.Observable.dll`