New cross-validation iterators that return train/valid/test splits

This PR (clone of lisa-lab/pylearn2 #889) adds the capability to perform cross-validation using training, validation, and test sets.

The cross-validation iterators in sklearn only return train/test splits. The new subset iterators (and their corresponding dataset iterators) in this PR return train/valid/test splits by starting with a standard train/test split and further dividing the train subset into a train/valid split.

Additionally, the cross-validation tests have been reorganized into several files.