shell: Don't make desktop_shell background a wl_shell_surface

We don't gain anything from taking a wl_shell_surface in
desktop_surface.set_background, except making wl_shell_surface
gratuitously dependent on wl_shell.  In shell.c we can also handle
backgrounds in their own background_configure function which simplifies
the mapping and placement logic.
diff --git a/clients/window.c b/clients/window.c
index 9d384b7..d160b08 100644
--- a/clients/window.c
+++ b/clients/window.c
@@ -2913,7 +2913,8 @@
 };
 
 static struct window *
-window_create_internal(struct display *display, struct window *parent)
+window_create_internal(struct display *display,
+		       struct window *parent, int type)
 {
 	struct window *window;
 
@@ -2926,7 +2927,7 @@
 	window->parent = parent;
 	window->surface = wl_compositor_create_surface(display->compositor);
 	wl_surface_add_listener(window->surface, &surface_listener, window);
-	if (display->shell) {
+	if (type != TYPE_CUSTOM && display->shell) {
 		window->shell_surface =
 			wl_shell_get_shell_surface(display->shell,
 						   window->surface);
@@ -2940,7 +2941,7 @@
 	window->allocation.height = 0;
 	window->saved_allocation = window->allocation;
 	window->transparent = 1;
-	window->type = TYPE_NONE;
+	window->type = type;
 	window->input_region = NULL;
 	window->opaque_region = NULL;
 
@@ -2973,7 +2974,19 @@
 {
 	struct window *window;
 
-	window = window_create_internal(display, NULL);
+	window = window_create_internal(display, NULL, TYPE_NONE);
+	if (!window)
+		return NULL;
+
+	return window;
+}
+
+struct window *
+window_create_custom(struct display *display)
+{
+	struct window *window;
+
+	window = window_create_internal(display, NULL, TYPE_CUSTOM);
 	if (!window)
 		return NULL;
 
@@ -2986,11 +2999,11 @@
 {
 	struct window *window;
 
-	window = window_create_internal(parent->display, parent);
+	window = window_create_internal(parent->display,
+					parent, TYPE_TRANSIENT);
 	if (!window)
 		return NULL;
 
-	window->type = TYPE_TRANSIENT;
 	window->x = x;
 	window->y = y;
 
@@ -3123,7 +3136,7 @@
 	if (!menu)
 		return;
 
-	window = window_create_internal(parent->display, parent);
+	window = window_create_internal(parent->display, parent, TYPE_MENU);
 	if (!window)
 		return;