Add machinery for integration tests

This code permits the construction of script-like test cases. Examples
can be seen in src/programs/mdrun/tests/rerun.cpp and
src/gromacs/gmxana/legacytests/gmx_traj_tests.cpp.

Initially, this will permit us to check things like "this combination
of inputs to grompp led correctly to error/success in grompp or mdrun,
and did not segfault." This will permit us to enumerate test cases
over ranges of legal inputs to .mdp in a more automated fashion, using
things like the enumerations in the source code, without needing to
store and maintain all the input cases. This is particularly valuable
for detecting unknown side effects when refactoring (e.g. removing
PD).

Also permits test cases like CheckMdrunCanWriteCheckpoint.

Reporting of failures when run under MPI is a long way from perfect.
Only rank 0 can be allowed to write to stdout and the GTest XML output
file. On stdout, ranks of failing tests and their expected and actual
values are reported. In the XML, only the ranks are reported. Fixing
this later would require serializing in rank > 0 either the
TestPartResult object, or its result string, and sending those to rank
0 for processing.

Later, it would be good to refactor these tests so that we do not have
to do things like disk I/O for .tpr files, so they run faster and
we can have more of them.

Also later, machinery to get things like energies and forces from
mdrun for sanity checks would be great, too, so that we can prevent
bugs like "this combination of inputs incorrectly computes zero
energies" when somebody forgets to extend a switch statement, etc.

Change-Id: I8072355b44c12d4a47c181734c83c961fd306666