wayland: Rewrite wl-shm
The main motivation for the rewrite is to properly port ShmClientBuffer to our GraphicsBuffer abstractions. As is, libwayland implementation is not suitable for our needs. We may need ShmClientBuffer to be alive when its corresponding wl_shm_buffer resource is destroyed, for example to play a window closing animation. With the existing api, we need to fight libwayland. Besides that, libwayland doesn't provide a way to get underlying pool file descriptor, which is needed to fill ShmAttributes.