Refacto text chat

This PR split the `WebRTC` class in 2 parts:

  - `WebRTC` which handle of the connection and media state
  - `WebRTC.DataChannel` an object respecting the transport interface for `TextChat.transport`.

The idea here is to have the exact same behaviour as before but with a generic `transport` object inside `TextChat` so we can then replace that by a transport specific to SPA and not datachannels.