weston-launch: Unblock our signalfd signals before execing child

Giovanni Campagna ran into this with mutter.
diff --git a/src/weston-launch.c b/src/weston-launch.c
index 8d8a903..e2d2d32 100644
--- a/src/weston-launch.c
+++ b/src/weston-launch.c
@@ -542,6 +542,7 @@
 launch_compositor(struct weston_launch *wl, int argc, char *argv[])
 {
 	char *child_argv[MAX_ARGV_SIZE];
+	sigset_t allsigs;
 	int i;
 
 	if (wl->verbose)
@@ -556,6 +557,13 @@
 
 	unsetenv("DISPLAY");
 
+	/* Do not give our signal mask to the new process. */
+	sigemptyset(&mask);
+	sigaddset(&mask, SIGTERM);
+	sigaddset(&mask, SIGCHLD);
+	sigaddset(&mask, SIGINT);
+	sigprocmask(SIG_UNBLOCK, &mask, NULL);
+
 	child_argv[0] = wl->pw->pw_shell;
 	child_argv[1] = "-l";
 	child_argv[2] = "-c";