Modified Dataset.replace to replace a dictionary of variables

The resulting function is more flexible and provides a canonical solution for a common pattern I found myself writing with xray:
- Create a new dataset based on some (but not all) variables from an existing
  dataset.
- Add in new variables, often of that same name as the variables I removed
  from the original dataset.