Allocate less memory for every wl_callback

wl_callback and wl_region are two kinds of objects that are frequently
allocated.

Currently, we make two extra heap allocations per each wl_callback
object. One for the wrapper object (FrameCallback) and the other one is
for its Resource.

With this change, no extra allocations will be made. Also, due to
relying on wl_resource linked lists, the destroy listener implementation
got much simpler.

This won't result in huge memory usage or performance improvements, but
still it's worth reducing the number of memory allocations where possible.
1 job for !270 with work/less-mallocs in 5 minutes and 53 seconds (queued for 23 seconds)
latest detached
Status Job ID Name Coverage
  Build
passed linux kf5-qt5 qt5.15 #120401

00:05:53

65.0%