Combine a type with a template of what values to use when they’re unspecified
in the self instance. On containers like maps, this will recursively call
merge for elements that have the same key.
Merge and combine the elements in two containers using a custom function for getting
the key that should be used for each element. This allows merging and combining Vec.