Unified listing and downloading files.

- DataFile base class for data files added
- Indexer refactored to use new DataFile base class
- GitHubDao refactored so getting file list uses the downloaded and
cached file list