This diff adds a singleton class for a publisher in the Tunnelbroker client integration into the Tunnelbroker. The publisher class uses `connect()` method to make a connection to the Tunnelbroker for the publisher. This approach is inspired by our [[ https://github.com/CommE2E/comm/blob/master/keyserver/src/socket/redis.js | Redis approach ]] with the changes that we are connecting to the Tunnelbroker ahead of time (on server start) instead of on publishing [[ https://github.com/CommE2E/comm/blob/0d5ed08376e95712864a4dd6038e501ed70723d5/keyserver/src/socket/redis.js#L38 | like in the Redis implementation ]]. I think it's a good way to make a connection ahead of time, but this can be changed if reviewers think otherwise.
Linear task: [[ https://linear.app/comm/issue/ENG-2613/implement-an-abstraction-and-publishing-for-the-redis-and-tunnelbroker | ENG-2613 ]]