interleave_datasets for map-style datasets
Currently the `interleave_datasets` functions only works for `IterableDataset`.
Let's make it work for map-style `Dataset` objects as well.

It would work the same way: either alternate between the datasets in order or randomly given probabilities specified by the user.