Fix merge to properly operate over dict.

Note: not the most efficient implementation that most likely exists.
For this initial PR I was mainly focusing on ensuring I had the
semantics of the merge correctly to start a discussion.

Ensure we convert the inner dict to a list, uniquely sort the list, so
we can uniquely merge both contents, and then map over the results to
convert the inner list back to a dict.

This is necessary because mutators add data to this dictionary and we
can not guarantee an internal sort order, which causes siblings with a
default of allow_mult=true for the same value.

This is a side effect of the inner data structure not being an orddict.

@evanmcc @engelsanchez