SplitableDatasets

add an implementation for splitable datasets that are based on instance
pointers. Can be used for general cross validation that requires
partitions from a dataset.