Bug 1097579 - Refactor Multicontact code to prepare it for contacts datastore implementation

...
It may seem pretty obvious but a comment here helps:
 `// The GCDS may store more than one pointer to a contact source for each entry, in that case we need to do a passive merge before returning the result.`