Change semantics of surface map / unmap

QtWayland implements setVisible(false) as a wayland surface buffer detach. Previous semantics would result in the removal of the window from the model on setVisible(false). However, this was not apparent with previous semantics, as QWaylandWindow never happens to commit the detach. 

Changes: 
 - Remove window from the model only when the surface is destroyed, i.e. the client close()s the window.
 - Add windowHidden signal to LipstickCompositor to let the compositor know when a window is hidden