emit windowClosed when a wayland surface is unmapped
An X client had windowAdded/Closed when it mapped/unmapped
A client has windowShown/Hidden when the Compositor show/hides a window.
Wayland has the annoying case of allowing mapping/unmapping a window
without destroying the ShellClient object that we need to be tracking.
(though now both major toolkits destroy surfaces anyway)
This was solved by repurposing the hide/show for client maps/unmaps, but
this leads to patching effects
(451bbb54ddf864f80142f36a9d5d54f57e434f1c) then D14366 fixing that, and
you'd have to do the same on most other effects and it would become a
mess.
This patch emits windowClosed signals on client map/unmap. To do this
the windowClosed signal is split into two. Also we have to track effect
ref'ing a window on a regular shellclient in case it gets unmapped then
afterwards gets deleted whilst an effect is animating it.