Item194 (second part) Allow merge of contacts

item:194 Implement contact merge functionality.

The first contact selected is considered the primary contact, while the second one is consider a duplicate.

For merging:
* empty or `undefined` fields on the primary contact will be overwritten by the values in the duplicate contact, as long as the value in the duplicate contact is not an array (array values are not merged).
* as an exception to the non-array rule, the `dailyVisit` arrays of both the primary and secondary contacts are merged into the primary contact.
* a `duplicatesList` field is added to the primary contact containing a list of duplicate ids.
* a `duplicateOf` field is added to the secondary contact containing the id of the primary contact.