DataSetIterator implementation that can be used for all dataset (not just qubes). Originally this only worked for QDataSets that were qubes, or datasets that had the same dataset geometry for each slice. At some point this was modified to work with any dataset but the name remains. DataSetIterators are intended to work with multiple datasets at once. For example, if we want to add the data from two datasets together, we would create one iterator that would be used to access both datasets. One dataset is provided to the constructor, but any dataset of the same geometry can be passed to the getValue method. TODO: This does not work for Rank 0 datasets. See sftp://klunk.physics.uiowa.edu/home/jbf/project/autoplot/script/demos/jeremy/qubeDataSetIteratorForNonQubes.jy
reinitializes the iterator.
return an iterator for the slice of a dataset (on the 0th index). This is introduced to improve performance by reducing the number of bounds checks, etc from the general case. Note slice is a native operation for most datasets now, so this is probably obsolete.