```
After the commit 393ac29f0b8be068c8e, which force clearing p_klist on
the process structure reap, the sys.kqueue.proc3_test.proc3 test started
failing. The reason is that kqueue filter interface does not match the
lifetime of the struct proc, the filter operates on knote list after the
process exited and even was reaped.
To fix it, effectively change EVFILT_PROC in an opposite way comparing
to the previous attempt: instead of forcibly clean and destroy p_klist
on reap, detach the knote list existence from struct proc reuse, and
make it persistent, indexed by pid. This allows process knotes to
survive waitpid(2).
Keep p_klist as an optimization to avoid looking up knlist by pid in
many places. But, instead of the process mutex, process' knote lists
are synchronized by dedicated leaf global mutex, which is also used to
synchronize lookup structure. If problematic, this mutex can be split
per pid hash value.
Note that NOTE_EXIT is still not quite correct, in that it is not
deterministic which specific process exit code is returned, among all
processes exited with given pid. But now we at least do not leak memory
for p_klist.
Fixes: 393ac29f0b8be068c8e46f76c2eeee07d20ea4df
PR: 275286
```