Refactor with separated value reader/writer

For cases where it made the code more clear, I replaced manual file manipulation with using the SeparatedValue{Reader,Writer} objects in the CombineReports command.  There may be some debate about how this will affect performance.  In the case of reordering columns, I feel that the code is enough clearer to definitely warrant the change.  The other cases may be more questionable.  In a couple cases (the sort functionality and adding the source column), I left them as-is.
Thanks to @dufeiyu for the good suggestion.