Simplied and made the design of Unity observable more generic.

Unity observables are now created via the FromCoroutine method that
takes a coroutine that consumes an observer and an isDisposed closure. This allows
users to create observable using their own coroutines instead of the only the ones
supplied by this library.