Dataset enumeration

Adds the ability to enumerate the datasets that are available, making data discovery and getting an overview of a repository easier.

Depends on #205, and includes changes extracted from #198.