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.
What do you mean by "have names"? (they do have names -- if you're just asking whether they should be re-useable, my thoughts are *not yet*)

Yeah, actually no need to configure the connection and datachannel closure promise behaviour here. Removed.