x11: Rework how X11 outputs are queried
Currently, there are a couple of issues with output querying on X11:
(a) if an output is changed, for example its transform has been changed, then all outputs will be destroyed and created again
(b) it's possible to encounter the case where the platform has no outputs. The X11Platform destroys all outputs, then queries new outputs. The Workspace and AbstractClient sub-classes handle having no outputs very poorly! It's even possible to hit a crash.
With this change, outputs will be queried similar to how it's done on Wayland.
Edited by Vlad Zahorodnii