Add ostream formatting for std::map
Make model::test_case not be a first-class entity

The model::test_case class exists to carry information about the details
of a test case but it should not be used as a "first-class" entity.
Doing so causes a lot of problems, if only because this requires a cyclic
dependency between model::test_program and model::test_case and this has
proven to be a huge annoyance over time.

The interface we want to expose to callers is the one of
model::test_program, and this class should hide the details of the test
cases behind an interface that is agnostic to the internal data types.

Start this refactoring by detaching model::test_case from its container
model::test_program.  There are still a lot of hacks left behind after
doing this that will be cleaned up later.
Make model::test_program immutable

Kill the set_test_cases hack that has haunted model::test_program since
the beginning of times (and that was made much worse with the
introduction of the model module).

Instead, add an ad-hoc lazy_test_program to the runner module that
implements the delayed loading of test cases.  The kyuafile module now
explicitly uses this class instead, as that is the only place where we
need lazy processing of test cases.

While doing this, introduce a new builder for this class to simplify
all affected tests.

I am not convinced this is the final design but the code is much nicer
than it was before and should be easier to maintain, particularly on
the tests side.
Generalize -v flag in testers

We want to start passing the configuration variables to the list operation,
should the test program want to access them, so we need to make the -v flag
"generic".

This change only moves the parsing of the -v flag to happen before the
tester's subcommand name.  The "list" command still ignores these values.
Pass user configuration variables to ATF's list

Allow access to the user-provided configuration variables from ATF test
programs when running in "list" mode.
Add integration tests for config vars in headers

Make sure that user-provided configuration variables reach ATF test
programs when running in list mode by adding an integration test.
NEED TO FIX UP: Actually propagate variables to list.

This is super-incomplete but plumbing through the configuration variables
to the "list" operation is very complex given that none of the code had
support for this.  In fact, this is difficult because of lazy_test_program
and the way it handles delayed loading of test case lists...