Introduce SurfaceCursorSource
The contents of the cursor can be either a normal image or a wl_surface. At the moment, we get an image from the wl_surface. But it's going to be changed so we use SurfaceItem to render wl_surface cursors.
SurfaceCursorSource provides the way to get the wl_surface handle from the cursor. In order to provide backwards compatibility, it also provides a QImage.