Sink
A Sink is a generic destination for data.
Unlike Flutter sinks, this one cannot be closed. There are also no errors (compared to e.g. Flutter EventSink) because we're following a functional approach and use monads to model success/failures (using https://github.com/michaelbull/kotlin-result).