Implement loom.datasets.load via lots of refactoring