A default implementation of 
DataChannelDescriptorMerger. The general rule of
 merge is that the order of descriptors on the merge list matters. If there are two
 conflicting metadata objects belonging to two descriptors, an object from the last
 descriptor takes precedence over the object from the first one. This way it is easy to
 override pieces of metadata. This is also similar to how DI modules are merged in
 Cayenne. So this is how the merge works:
 
 - Merged descriptor name is the same as the name of the last descriptor on the merge
 list.
- Merged descriptor properties are the same as the properties of the last descriptor
 on the merge list. I.e. properties are not merged to avoid invalid combinations and
 unexpected runtime behavior.
- If there are two or more DataMaps with the same name, only one DataMap is placed in
 the merged descriptor, the rest are discarded. DataMap with highest index in the
 descriptor array is chosen per precedence rule above.
- If there are two or more DataNodes with the same name, only one DataNodes is placed
 in the merged descriptor, the rest are discarded. DataNodes with highest index in the
 descriptor array is chosen per precedence rule above.