Clean up and reorganize evaluate.cpp

- A fourth type of option class was made for the most basic options
  (help, version, program, and arg).
- There is once more a single help option, which can take an optional
  argument to determine which type of option to describe.  With no argument,
  it gives the basic overview of the program, plus the basic options from
  above.
- Removed some code that was no longer being used.
- Moved evaluate()'s check for input size to before the creation of new files.
  Though it's unlikely to happen in practice, it could have happened that
  the exception would be thrown after the files were created, and before they
  were removed.
- Made evaluate() call vector_to_argv() only once at the beginning instead of
  every time a test is run, for effciency reasons.