d/scripts/interpreters: Add cfagent

Signed-off-by: Niels Thykier <niels@thykier.net>
Add new collection interface to reduce overhead

The major overhead in running collections are loading the required
Perl Modules (again).  As an example, loading Lintian::Util has a cost
of 0.040 seconds (the first time).  With a couple of extra modules,
coll/hardening-info has a average "no-op" runtime of at least 0.150s.
Eliminating the module load overhead, it drops to 0.065s.

This patch set creates a new (backwards compatible) interface for
invoking collections.  Instead of doing a complete fork+exec, the new
interface loads the collection script like a perl module and load a
"collect" sub (similar to how scripts work).  This interface can still
be combined with fork for parallelization.

Because it avoids the exec, the child process retrains the cache of
(most of) the Perl Modules.  This vastly reduces the "start up" time
for the collections.

Signed-off-by: Niels Thykier <niels@thykier.net>
L::CollScript: Handle the actual collect invocation

Add full collection invokation handling in L::CollScript and abuse
this in the frontend to transparently support perl-coll for
auto-removed colls.

Signed-off-by: Niels Thykier <niels@thykier.net>
coll: Lazily open some pipes that are not always used

Signed-off-by: Niels Thykier <niels@thykier.net>