Recursive diff, merge, and unmerge for hashes and arrays.