Add simplified DataSource infrastructure.

This commit implements a significant simplification and refactor
to the data source infrastructure.  There are now only three DataSource
classes (at the moment).