Add options for specifying files and how to run evaluation

Specifically, the following options have been added:
- Specify directories and suffixes (eg extensions) for input and output files.
  Files in corresponding directories whose names are the same except for their
  extension are expected to correspond.  That is, the output file is what is
  expected when the program is given the input file.  If an input file has no
  corresponding output file, no output is expected.  If an output file has no
  corresponding input file, it is expected to produce that output without any
  input.  This functionality has not yet been implemented, but the framework
  for it is there.
- Specify only running evaluation tests, or only running timing tests.  In the
  former case, timing statistics will not be reported.  In the latter, the
  outputs will not be compared to anything.
The libraries boost::program_options and boost::filesystem have been used to
allow for more concise code and a more portable program.
TO DO:
  Compare a program's output to expected output
  Allow formatting of printing, both for timing and evaluation tests
  Catch more errors, especially with the boost libraries
  Allow for both relative and absolute directory referencing