compositor: The compositor is now jiust a regular global object

We have to provide our own bind callback and add a wlsc_compositor pointer
to wlsc_input_device, but on the whole it's nice cleanup.
diff --git a/compositor/shell.c b/compositor/shell.c
index f8305db..6c6fd44 100644
--- a/compositor/shell.c
+++ b/compositor/shell.c
@@ -660,8 +660,7 @@
 	struct wl_selection *selection = resource->data;
 	struct wlsc_input_device *wd = input_resource->data;
 	struct wl_display *display = wl_client_get_display (client);
-	struct wlsc_compositor *compositor =
-		(struct wlsc_compositor *) wd->input_device.compositor;
+	struct wlsc_compositor *compositor = wd->compositor;
 
 	selection->input_device = &wd->input_device;
 
@@ -702,8 +701,7 @@
 		container_of(resource, struct wl_selection, resource);
 	struct wlsc_input_device *wd =
 		(struct wlsc_input_device *) selection->input_device;
-	struct wlsc_compositor *compositor =
-		(struct wlsc_compositor *) wd->input_device.compositor;
+	struct wlsc_compositor *compositor = wd->compositor;
 
 	if (wd && wd->selection == selection) {
 		wd->selection = NULL;