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.
Lets make a global named static constructor for a promise that never fulfills. Then this becomes more readable: 
` (<any>mockPeerconnection.onceDataChannelClosed).and.returnValue(createUnfilfilledPromise());`

But also: let's document why we have this unfilfilled promise here... I don't quite see it's role in the test.