Big update to GatherResults

Now allows modes to be specified and uses the GetOpt library to handle
arguments more elegantly.