Make `Merge` slightly more sensible.

This sends “locally different” structures to the left disjunction rather
than the right.

As a result, `merga` is simplified to only pass the merged value on
`sameShapeF`, and a second morphism `paramerga` is added that sends
left/right/merged (but with the merged value having sensible
non-recursive values). It does end up complicating Diffable instances a
little, but hopefully that can be improved.