Eval data source refinements

Improve eval data sources:

- Get rid of old, unused `release()` method
- Allow data set isolation on a per-data-set, per-crossfold basis: data sets can have an isolation group, and they are isolated from all data sets with other isolation groups.
- Saying `isolate true` in a `crossfold` task generates each data set with a unique isolation group.
- Saying `isolate true` in a `trainTest` is now deprecated, but it forces each data set to have a unique isolation group.
- Simplifies the logic of the job graph building code a bit with the isolation groups.