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.