Add --quiet, --loud, and --times arguments, and argument verification

The first two options specify how to report the results of tests:
quiet   - Report only failed tests, and do not give details of the failures
verbose - Report the status of every test.  If successful, say so,  If failed,
          indicate what difference was found.
default - Report only failed tests, but give details indicating what difference
          was found.
The third option specifies how many times to run each test.  Note that the
results of tests, whether success or failure, are only reported once.  This
is used to give a more detailed timing report (ie. the first run took X time,
the second took Y time ... and the average was Z time).  The default value
for this argument is 1.
Argument verification simply verifies that the combination of arguments
makes sense.
Finally, fixed a bug in the Timer class for the edge case of running tests
zero times.  It printed an "empty" report that still contained labels for
each row.  Now nothing is printed if zero tests are run.