implement similar lifecycle for socks sessions as for socks server

Similar ideas to:
https://github.com/uProxy/uproxy-networking/pull/137

A SOCKS session lives as long as its TCP connection and datachannel.
Agree a fulfill-only promise might be nice.

OK, I've changed the doc. Good catch, although I'm going to keep the catch block in `makeTcpToRtcSession` to flag unforeseen errors.