Make frame callbacks unconditional

From wayland protocol:
"A client can request a frame callback even without an attach, damage,
or any other state changes. wl_surface.commit triggers a display
update, so the callback event will arrive after the next output
refresh where the surface is visible."

We therefore should not condition the frame callback on client
having a valid damage rect. Instead, it should be conditional
to surface visibility, known by compositor.

Also make frame callbacks part of the pending state, to be applied
on commit.
Move commit out of damage
Despite warning, flush window system events on setVisible