compositor: Invoke compositor methods only on windows with shell surface

Windows without a shell surface are just rendered on screen, we don't do
sophisticated window management on them.
compositor: Calculate surface position only for windowed visibility

Position for maximized and full screen windows should be set to the
output top left corner, but we don't have proper output management on
QtCompositor. Minimized windows are not currently supported by Wayland.
This leaves normal windows out, we take care of them by calculating the
position ourselves.
compositor: Handle windows without shell surface not from the shell

Some windows don't have the shell surface and are not from the shell
client, but we need to render those surfaces nonetheless.
compositor: Set idle interval

Add a command line option to set the idle interval.
compositor: Lock screen

Implement the lock screen protocol.