patch 8.1.0087: v:shell_error is always zero when using terminal for "!cmd"

Problem:    v:shell_error is always zero when using terminal for "!cmd".
Solution:   Use "exitval" of terminal-job. (Ozaki Kiichi, closes #2994)
diff --git a/src/os_unix.c b/src/os_unix.c
index 05ad6b8..3649276 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -4365,6 +4365,7 @@
     char_u	*tofree2 = NULL;
     int		retval = -1;
     buf_T	*buf;
+    job_T	*job;
     aco_save_T	aco;
     oparg_T	oa;		/* operator arguments */
 
@@ -4374,6 +4375,11 @@
     init_job_options(&opt);
     ch_log(NULL, "starting terminal for system command '%s'", cmd);
     buf = term_start(NULL, argv, &opt, TERM_START_SYSTEM);
+    if (buf == NULL)
+	goto theend;
+
+    job = term_getjob(buf->b_term);
+    ++job->jv_refcount;
 
     /* Find a window to make "buf" curbuf. */
     aucmd_prepbuf(&aco, buf);
@@ -4391,9 +4397,11 @@
 	else
 	    normal_cmd(&oa, TRUE);
     }
-    retval = 0;
+    retval = job->jv_exitval;
     ch_log(NULL, "system command finished");
 
+    job_unref(job);
+
     /* restore curwin/curbuf and a few other things */
     aucmd_restbuf(&aco);