weston-launch: Clear environment and set it up from scratch

With recent systemd[1] XDG_VTNR will leak through to pam, which ends up
setting a vtnr pam argument with the wrong value.  The fix is to clear
XDG_VTNR first, but what we should have been doing all along is resetting
the environment.

Thanks to Ray Strode for helping debug this.

[1] http://cgit.freedesktop.org/systemd/systemd/commit/?id=a8573ccc35a4efe8900be5d48c6c803670540c2b
diff --git a/src/weston-launch.c b/src/weston-launch.c
index 583e85a..bc7f8a2 100644
--- a/src/weston-launch.c
+++ b/src/weston-launch.c
@@ -556,6 +556,12 @@
 	if (wl.pw == NULL)
 		error(1, errno, "failed to get username");
 
+	clearenv();
+	setenv("USER", wl.pw->pw_name, 1);
+	setenv("LOGNAME", wl.pw->pw_name, 1);
+	setenv("HOME", wl.pw->pw_dir, 1);
+	setenv("SHELL", wl.pw->pw_shell, 1);
+
 	if (!weston_launch_allowed(&wl))
 		error(1, 0, "Permission denied. You should either:\n"
 #ifdef HAVE_SYSTEMD_LOGIN
@@ -605,12 +611,6 @@
 			sleep(sleep_fork);
 		}
 
-		if (new_user) {
-			setenv("USER", wl.pw->pw_name, 1);
-			setenv("LOGNAME", wl.pw->pw_name, 1);
-			setenv("HOME", wl.pw->pw_dir, 1);
-			setenv("SHELL", wl.pw->pw_shell, 1);
-		}
 		env = pam_getenvlist(wl.ph);
 		if (env) {
 			for (i = 0; env[i]; ++i) {