Returns a copy of the collection with the remaining collections merged in, calling the merger
function whenever an existing value is encountered.
A functional alternative to collection.mergeWith()
which will also work with plain Objects and Arrays.