compositor: add API to manage compositor instances

This commit adds three new exported functions:
- weston_compositor_create() returns a new weston_compositor instance,
initializing it as the now removed weston_compositor_init() did.
- weston_compositor_exit(compositor) asks the compositor to tear
down by calling the compositor's exit vfunc which is set by the
libweston application.
- weston_compositor_destroy(compositor) is called by the libweston
application when tearing down the compositor. The compositor is destroyed
and the memory freed.

Reviewed-by: Jon A. Cruz <jonc@osg.samsung.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
diff --git a/src/compositor.h b/src/compositor.h
index bec404a..faaacc2 100644
--- a/src/compositor.h
+++ b/src/compositor.h
@@ -689,6 +689,9 @@
 	int32_t repaint_msec;
 
 	int exit_code;
+
+	void *user_data;
+	void (*exit)(struct weston_compositor *c);
 };
 
 struct weston_buffer {
@@ -1337,9 +1340,14 @@
 uint32_t
 weston_compositor_get_time(void);
 
-int
-weston_compositor_init(struct weston_compositor *ec,
-		       int *argc, char *argv[], struct weston_config *config);
+void
+weston_compositor_destroy(struct weston_compositor *ec);
+struct weston_compositor *
+weston_compositor_create(struct wl_display *display, void *user_data);
+void
+weston_compositor_exit(struct weston_compositor *ec);
+void *
+weston_compositor_get_user_data(struct weston_compositor *compositor);
 int
 weston_compositor_set_presentation_clock(struct weston_compositor *compositor,
 					 clockid_t clk_id);