compositor: Add create_surface_signal

This signal is emitted when a client creates a surface, not for internal
surfaces.
diff --git a/src/compositor.c b/src/compositor.c
index a298fb8..ea27be4 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -2183,6 +2183,8 @@
 	}
 	wl_resource_set_implementation(surface->resource, &surface_interface,
 				       surface, destroy_surface);
+
+	wl_signal_emit(&ec->create_surface_signal, surface);
 }
 
 static void
@@ -3613,6 +3615,7 @@
 	ec->config = config;
 	ec->wl_display = display;
 	wl_signal_init(&ec->destroy_signal);
+	wl_signal_init(&ec->create_surface_signal);
 	wl_signal_init(&ec->activate_signal);
 	wl_signal_init(&ec->transform_signal);
 	wl_signal_init(&ec->kill_signal);
diff --git a/src/compositor.h b/src/compositor.h
index 15d6e03..af41b00 100644
--- a/src/compositor.h
+++ b/src/compositor.h
@@ -574,6 +574,7 @@
 	struct weston_config *config;
 
 	/* surface signals */
+	struct wl_signal create_surface_signal;
 	struct wl_signal activate_signal;
 	struct wl_signal transform_signal;