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-wayland.c b/src/compositor-wayland.c
index 626d8de..35f1de0 100644
--- a/src/compositor-wayland.c
+++ b/src/compositor-wayland.c
@@ -1404,7 +1404,7 @@
 			input->keyboard_focus = NULL;
 
 			if (wl_list_empty(&input->backend->compositor->output_list))
-				wl_display_terminate(input->backend->compositor->wl_display);
+				weston_compositor_exit(input->backend->compositor);
 
 			return;
 		}
@@ -1852,7 +1852,7 @@
 	int count = 0;
 
 	if ((mask & WL_EVENT_HANGUP) || (mask & WL_EVENT_ERROR)) {
-		wl_display_terminate(b->compositor->wl_display);
+		weston_compositor_exit(b->compositor);
 		return 0;
 	}
 
@@ -1960,10 +1960,6 @@
 		return NULL;
 
 	b->compositor = compositor;
-	if (weston_compositor_init(compositor, argc, argv,
-				   config) < 0)
-		goto err_free;
-
 	if (weston_compositor_set_presentation_clock_software(compositor) < 0)
 		goto err_compositor;
 
@@ -2032,7 +2028,6 @@
 	wl_display_disconnect(b->parent.wl_display);
 err_compositor:
 	weston_compositor_shutdown(compositor);
-err_free:
 	free(b);
 	return NULL;
 }