compositor: implement the wayland backend