Remove stale TODO from the test_program module
Add the test_program_builder::build_ptr method

It is sometimes useful, for simplicity's sake, to have the test_program
builder construct a dynamically-allocated object.  For this reason, add
a build_ptr() method that does just that.
Add an operator< overload to the test_program

This is purely to allow holding model::test_program objects into sets.
Add a formatter for std::pair
Add the scanner module

This module provides a mechanism to lazily scan a collection of test
programs to extract their test cases, one at a time.  This will be used
to generalize the various tricky algorithms in all front-end commands
that process test cases.
Use the new scanner in the list_tests driver
Use the new scanner in the run_tests driver
Use the new scanner in the debug_test driver
Drop unused forward declaration
Add missing docstring
Merge branch 'scanner'

This branch brings in the new engine::scanner module and class, which
provide a generator-style pattern to lazily scan the list of test
cases in a Kyuafile with optional filtering.

No functional changes.  However, this code will simplify the
implementation of parallel test case execution by clearly decoupling
Kyuafile scanning (which is non-trivial) from the handling of each
test case.
Add the process::wait_any() function

This new function is the equivalent of wait(2): awaits for any subprocess
to exit.  We will need this to implement the parallel execution of test
cases.
Add the process::exec() function

Generalize the private cxx_exec function in the process::child module and
make it a public process::exec top-level function.  We will be using this
in the implementation of parallel test program execution.  And, regardless,
it is nice to be able to test this function independently.
Add the engine::isolation module

This new module provides the isolate_child function which cleans up the
caller's process in preparation to run a test in a sane environment.
Yes, this module used to exist before the testers and it's time to bring
it back, although in a slightly different form.
Determine test case based on the helper's name

If the TEST_CASE environment variable is not provided to the
test_case_plain_helpers test program, attempt to guess the test case
name from the program's basename.  Do this so that we can execute
various instances of these helpers at the same time while each does
a different thing.
FIX THIS: setsid in child, not setpgid
NOT READY: Add executor module and plain module
FIXUP: executor with result_handle, incomplete
FIXUP: Executor with global state
FIX UP: Mixture code.  BREAK APART INTO VARIOUS FIXES