Dataset.merge ignores conflicting variable attributes

This is meant as a temporary fix until we figure out the right logic -- note the comments in the docs to this effect.

I also took this as an opportunity to clean up `xarray_equal` and the related functions. It should still do the same thing, just in a more modular way.