Replace Observer with Sink/SinkOf
Make Enumerator into a real parameterized type

This way, we can get its magical disposal behavior upon terminating
events.
Add CompositeDisposable.addDisposable with block
Enumerable.disposable for cancellation management
Add Sink conformance to EnumerableBuffer
Refactor Enumerator with an underlying Sink
Stop appending to EnumerableBuffer when terminated
Make ObservableProperty into a Sink
Remove optional from Enumerable.bindToProperty

It’s now guaranteed to return a Disposable.
Observable should not be disposable

What does it even mean when the stream is infinite? Let’s just rely on
memory management—if it’s deallocated, it’s done.