rework channel subscription flow

  Start is no longer asynchronous, it will perform some basic check, create an
  empty channel in reset state, then return. A client can subsequently
  subscribe to the channel, even though it not streaming yet. When the live
  stream is ready, it will announced to the stream manager, which will forward
  it to all pending clients.

  This new workflow solves race conditions that could previously occur, for
  instance when a client would kill its client connection because the stream
  was setup properly. It also solves race conditions that were triggered when
  two clients would request that same pooled channel.

  Note: this is pretty dirty right now, interfaces need to be cleaned up
  following this rework.