Rework xap_helper for lei to prefork before dynamically forking
a new worker on demand for every request. We do this to ensure
the C++ xap_helper is usable ASAP and enable us to reliably skip
approxidate handling in Perl (and thus rely on our integration
of the C approxidate from git(1) with Xapian's QueryParser API).
Previously, we would v?fork+execve for every query, but it was
open to TOCTOU errors for deciding whether or not to do
approxidate processing in Perl or (C-flavored) C++. Using
fexecve(2) was also considered, but that's not available from
pure Perl and I'm still hesitant to make Inline::C or XS a hard
requirement for us.
Public-facing xap_helper usage remains unchanged, since it's
expected public-facing daemons have dedicated resources
preconfigured while local software such as lei can be more
dynamic and flexible in its resource use.
There is no change to the Perl + (XS|SWIG) XapHelper
implementation, since it provides no benefit to lei users.