Implement a "merge dataset"

Use this for combining e.g. features
```
from six import iterkeys
from six.moves import zip_longest

d1 = {'a': 1,  'b': 2,  'c': 3}
d2 = {'a': 10, 'b': 20, 'c': 30}
    
def keys():
    sentenel = object()
    iters = [iterkeys(d1), iterkeys(d2)]
    for k1, k2 in zip_longest(*iters, fillvalue=sentenel):
        # this assumes that thek keys are in sorted order,
        # which is generally not true for python dictionaries,
        # but is (I think?) for our dataset.
        assert k1 == k2
        yield k1

print(list(keys()))
```