bpo-40094: Enhance fork and wait tests (GH-19259)

* test_fork1: remove duplicated wait_impl() method: reuse
  fork_wait.py implementation instead.
* Use exit code different than 0 to ensure that we executed the
  expected code path.
diff --git a/Lib/test/test_wait4.py b/Lib/test/test_wait4.py
index a186072..6c7ebcb 100644
--- a/Lib/test/test_wait4.py
+++ b/Lib/test/test_wait4.py
@@ -14,7 +14,7 @@
 
 
 class Wait4Test(ForkWait):
-    def wait_impl(self, cpid):
+    def wait_impl(self, cpid, *, exitcode):
         option = os.WNOHANG
         if sys.platform.startswith('aix'):
             # Issue #11185: wait4 is broken on AIX and will always return 0
@@ -29,7 +29,8 @@
                 break
             time.sleep(0.1)
         self.assertEqual(spid, cpid)
-        self.assertEqual(status, 0, "cause = %d, exit = %d" % (status&0xff, status>>8))
+        self.assertEqual(status, exitcode << 8,
+                         "cause = %d, exit = %d" % (status&0xff, status>>8))
         self.assertTrue(rusage)
 
 def tearDownModule():