Replace every Subscriber and SinkType with SinkOf

Using a protocol type (here, SinkType) in start() causes no end of
typechecker problems. If we use SinkOf<Event<T>> everywhere instead,
we’re fine.

Consequently, a custom Subscriber type becomes a PITA. Refactor it into
a free function that can create the proper SinkOf<T>.
Add startWithDisposable() convenience function
Refactor users of ColdSignal for the new API
Flip so the lower-level function is startWithSink

start() is what most consumers will probably want, so make it as
convenient as possible. This also means removing the disposable
argument, which is really only useful when constructing signal
operators.
Refactor startMulticasted() to be disposable