Implement a "merge dataset"

Use this for combining e.g. features
`keys()` is an iterator, so I think we can iterate over the keys from all the component datasets in lock-step with zip, and then make sure that they all exhaust at the same time.