Test/Train split, Runners, Writer interface

Added filter to split a dataset into a training and testing dataset.
Added a Runner interface, to build experiments that expose run metrics.
Added a Writer interface and CSVWriter implementation, for writing results
to a file.