Add support for cross validation in training/evaluating models. We can add k-fold cross validation and let the user choose the size of the training data.