xwayland: Fix a couple of regressions from !1300
While walking the window tree looking for the surface window to use, we should ignore windows using manual redirection. Those are to be considered as "transparent", they do not obscure siblings or parent windows.
Also, we should stop as soon as a window is unmapped, whatever lies beneath is not visible anyway.
This also fixes an issue with the Damage list becoming corrupted when destroying a window, because the first thing that DeleteWindow() does is to unmap the window and crush the window tree underneath it.
Fixes: 3a0fc268 - xwayland: Add xwl_window::surface_window
Closes: #1677 (closed)
Closes: #1679 (closed)
Closes: #1680 (closed)