compositor: make surface_configure() a vfunc

This allows us to move the logic that calls shell->map() or
shell->configure() into shell while allowing it to be overriden for
surfaces that should not be handle by the shell, such as drag icons.

This patch adds a pointer function called configure to weston_surface,
moves the currsent surface_configure() code into shell and implements
a separate configure() for drag surfaces.
diff --git a/src/compositor.h b/src/compositor.h
index d76e99d..65aa48f 100644
--- a/src/compositor.h
+++ b/src/compositor.h
@@ -335,6 +335,12 @@
 	struct wl_buffer *buffer;
 	struct wl_listener buffer_destroy_listener;
 
+	/*
+	 * If non-NULL, this function will be called on surface::attach after
+	 * a new buffer has been set up for this surface. The integer params
+	 * are the sx and sy paramerters supplied to surface::attach .
+	 */
+	void (*configure)(struct weston_surface *es, int32_t sx, int32_t sy);
 	int force_configure;
 };