Dataset enumeration

Adds the ability to enumerate the datasets that are available, making data discovery and getting an overview of a repository easier.

Includes changes extracted from #198.
Enumerate means 'count' to many people - I don't think this comment adds much so it might be better to remove it.