Surface visibility changes

Changes:
  - actually commit surface buffer detach in QWaylandWindow::setVisible(false)
  - add some null checks to handle the buffer detach
  - send frame callbacks to clients immediately if they have detached the buffer
  - do not require valid damage for frame callback
  - send frame callbacks only after client has sent commit, ie. callbacks are part of pending commit state