A take on re-implementing channels (WIP- don't merge)

This is WIP and not yet finished.

This makes it possible to concat the returned `Observable` since write is eager.
This is used in `ClientConnectionImpl` to sequence delta sends but in general this enables to sequence writes on the channel based on the completion of a previous `Observable`.

If we write eagerly and concat, then the above can not be achieved.