Presence socket wrapper

This PR basically just adds a `PresenceSocket` wrapper around the websocket connection.

This is just a proposal, needs feedback from @dmose 

**Work in progress, do not merge this yet.**