compositor: Track pointer image protocol change

The request pointer.attach was replaced with pointer.set_cursor that
lets a client set the cursor surface for a given pointer.
diff --git a/clients/window.c b/clients/window.c
index 53022aa..57443d9 100644
--- a/clients/window.c
+++ b/clients/window.c
@@ -189,6 +189,7 @@
 	struct window *pointer_focus;
 	struct window *keyboard_focus;
 	int current_cursor;
+	struct wl_surface *pointer_surface;
 	uint32_t modifiers;
 	uint32_t pointer_enter_serial;
 	float sx, sy;
@@ -2295,8 +2296,12 @@
 		return;
 
 	input->current_cursor = pointer;
-	wl_pointer_attach(input->pointer, input->pointer_enter_serial,
-			  buffer, image->hotspot_x, image->hotspot_y);
+	wl_pointer_set_cursor(input->pointer, input->display->serial,
+			      input->pointer_surface,
+			      image->hotspot_x, image->hotspot_y);
+	wl_surface_attach(input->pointer_surface, buffer, 0, 0);
+	wl_surface_damage(input->pointer_surface, 0, 0,
+			  image->width, image->height);
 }
 
 void
@@ -3168,6 +3173,8 @@
 						       input->seat);
 	wl_data_device_add_listener(input->data_device, &data_device_listener,
 				    input);
+
+	input->pointer_surface = wl_compositor_create_surface(d->compositor);
 }
 
 static void
@@ -3190,6 +3197,8 @@
 	wl_data_device_destroy(input->data_device);
 	fini_xkb(input);
 
+	wl_surface_destroy(input->pointer_surface);
+
 	wl_list_remove(&input->link);
 	wl_seat_destroy(input->seat);
 	free(input);