Add read only interfaces for reactive collections

fixes #267 

This is a first cut at the read only interfaces. I simply changed the methods that return a derived collection to return the interface `IReactiveDerivedList`. It's possible to cast it to the underlying `ReactiveDerivedCollection` abstract base class and call the `Add` method, for example, but that'll throw a `NotImplementedException` so we're covered.

This helps people fall into the pit of success as the derived collection they get will not have any mutating methods on it. :)