shell: Properly track the focus state surface
shell: Properly track the focus state surface

We have to move the surface destroy listener around as we track the
currently focused surface.  Introduce a helper function,
focus_state_set_focus() for this and use throughout.

Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=73768

Fantu/compositor-spice,mchalupa/weston,Fantu/compositor-spice,Gnurou/weston,giucam/weston,udoprog/weston,jonnylamb/weston,Fantu/compositor-spice,Tarnyko/weston-xdg_surface_present,krezovic/weston,krezovic/weston,eyolfson/weston,xorgy/weston,sir-murray/weston,xorgy/weston,Gnurou/weston,kwm81/weston,giucam/weston,mchalupa/weston,udoprog/weston,Tarnyko/weston-xdg_surface_present,eyolfson/weston,sir-murray/weston,kwm81/weston,jonnylamb/weston