wsi/wayland: Fix segfault when using present wait on retired swapchain
The goal of this MR is to refactor the surface pointer such that there is no need to pilfer it. Instead, we can mark the swapchain as retired and immediately return from acquire/present, but still lets present wait complete. Present wait requests go to a swapchain-private queue, so there is no risk of cross-swapchain pollution.
https://github.com/Themaister/Granite/tree/present-wait-stress-test is a stress test that exposed a bunch of crash scenarios.
Builds on commits in !27833 (closed).