client: Re-use WebSocket connections
client: Re-use WebSocket connections

Use a socket pool, so tracker clients share WebSocket objects for the
same server.

In practice, WebSockets are pretty slow to establish, so this gives a
nice performance boost, and saves browser resources.

jhiesey/bittorrent-tracker,LinusU/bittorrent-tracker,feross/bittorrent-tracker,jhiesey/bittorrent-tracker,feross/bittorrent-tracker,prozacchiwawa/bittorrent-tracker