Merge from my repo

DataSetFilter implemented to split a dataset into a testing and training set
Added code to recombine separated binary labels into discrete labels (for the
test metrics)

Fixed bugs in metrics introduced by splitting labels into binary labels

Added a framework for defining experiment runners, which expose a standard set
of test metrics, and support writing to a CSV file

Added a CSV writer and writer framework, to write data to a file