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

...
I think this function deserves a more detailed comment :). Something like:

    /**
     * Returns a Promise with the merged contact information for the given GCDS
     * entry.
     *
     * @param {Object} entry Global entry for a particular contact as it is
     *                 stored in the GCDS. It should have this form:
     *                 {
     *                   id: <String>, // GCDS index.
     *                   entryData: <Array<GlobalContactInfo>>,
     *                 }
     *                 where GlobalContactInfo is the pointer to the actual
     *                 contact information stored in a DataStore owned by a
     *                 Contact Provider registered with the GCDS. This should
     *                 be an object like:
     *                 {
     *                    origin: <String>, // Origin of the Contact Provider
     *                                      // that is source of this contact
     *                                      // information.
     *                    uid: <String>, // Index of the Contact Provider's
     *                                   // DataStore for this contact.
     *                 }
     * @return {Promise<MozContact>}
     */