Server: Reap zombies created by multiprocessing.Process()
When creating checkers as multiprocessing.Process() objects, the multiprocessing module also creates a parent process (for the call_pipe() function) to call the actual checker process, but this parent process is not reaped. This is not a huge problem, since the zombie is always reaped automatically the next time the multiprocess starts a new process, but the zombies can be up to as many as there have ever been simultaneous checker processes. To fix this, the process object must be join():ed when they report completion of the child checker process.
* mandos (Client): Fix doc string to correctly state that Client.checker is a multiprocess.Process() and not a subprocess.Popen() object. (Client.checker_callback): After the returncode of the checker process has been read, wait for the self.checker Process object to finish by calling join() on it.