Create Dataset class and 2 new exception classes
Create Reader and Readers::CSV

This is the first step in replacing the Source and Sources::CSV classes.
The idea is that instead of the current setup, Reader subclasses will
provide a way to setup a Dataset object and iterate over rows.