shell: Handle wl_shell surfaces created by xwayland correctly

When xwayland creates a shell surface we don't have a resource.  The
recently added shell_surface_is_wl_shell/xdg_surface() tests don't
handle that very well.

For now, we assume that a surface without a resource is created from
xwayland and is a wl_shell surface.  We'll want to modify that to be a
xdg surface eventually, but for now this stops weston from crashing.
diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c
index 6a43e17..27a9ef5 100644
--- a/desktop-shell/shell.c
+++ b/desktop-shell/shell.c
@@ -3138,9 +3138,13 @@
 static bool
 shell_surface_is_wl_shell_surface(struct shell_surface *shsurf)
 {
-	return wl_resource_instance_of(shsurf->resource,
-				       &wl_shell_surface_interface,
-				       &shell_surface_implementation);
+	/* A shell surface without a resource is created from xwayland
+	 * and is considered a wl_shell surface for now. */
+
+	return shsurf->resource == NULL ||
+		wl_resource_instance_of(shsurf->resource,
+					&wl_shell_surface_interface,
+					&shell_surface_implementation);
 }
 
 static const struct wl_shell_interface shell_implementation = {
@@ -3395,9 +3399,10 @@
 static bool
 shell_surface_is_xdg_surface(struct shell_surface *shsurf)
 {
-	return wl_resource_instance_of(shsurf->resource,
-				       &xdg_surface_interface,
-				       &xdg_surface_implementation);
+	return shsurf->resource &&
+		wl_resource_instance_of(shsurf->resource,
+					&xdg_surface_interface,
+					&xdg_surface_implementation);
 }
 
 /* xdg-popup implementation */