Presence socket wrapper

This PR basically just adds a `PresenceSocket` wrapper.

This is just a proposal, needs feedback from @dmose