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_win32.c b/src/os_win32.c
index bece2c4..f8884e4 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -4796,6 +4796,7 @@
     long_u	cmdlen;
     int		retval = -1;
     buf_T	*buf;
+    job_T	*job;
     aco_save_T	aco;
     oparg_T	oa;		/* operator arguments */
 
@@ -4826,6 +4827,9 @@
     if (buf == NULL)
 	return 255;
 
+    job = term_getjob(buf->b_term);
+    ++job->jv_refcount;
+
     /* Find a window to make "buf" curbuf. */
     aucmd_prepbuf(&aco, buf);
 
@@ -4842,9 +4846,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);