This allows buffers to be shared between different asynchronous operations.
Once all users no longer need the buffer, it will be freed.
The motivation for this is being able to stream Wayland clipboard data
asynchronously to multiple clients. The buffer should only be freed after
the clipboard has changed and all ongoing transfer completes.