Moving DatasetReader.Base to spi.Abstract...

This is to separate the SPI components from API components.