[qtcontacts-sqlite-extensions] Implement generic 2-way-sync adapter

This commit adds a generic 2-way-sync adapter, including the majority
of the logic required to implement 2-way-sync with any arbitrary
sync endpoint (with pure-virtual functions for the fetch and upload
functionality which must be implemented by extenders).
Merge pull request #110 from chriadam/2waysync

[qtcontacts-sqlite-extensions] Implement generic 2-way-sync adapter
Update exported pkgconfig version
[qtcontacts-sqlite] Preserve the existing ID of an exported contact

If a contact is exported to a sync adaptor, then a remote modification
subsequently causes it to acquire a constituent from that sync adaptor,
ensure that it continues to be exported to that sync target with the
ID of the local constituent it originated from.

This introduces the possibility of having non-local contacts marked
as incidental, which has the effect of preventing them from being used
as the base of a partial aggregate.
[qtcontacts-sqlite] Don't remove modified sync contacts from exportedIds

Previously, any contact which was modified remotely was removed from
the exportedIds list.  This commit changes it so that the contact
is still tracked via the exportedIds list, so that if the backend
decides that the changes are incidental, and therefore the id of the
sync contact doesn't change, we continue to receive updates for it.
Merge pull request #118 from matthewvogt/incidental-st-constituent

[qtcontacts-sqlite] Preserve the existing ID of an exported contact
Merge pull request #117 from chriadam/exportedidsfix

[qtcontacts-sqlite] Don't remove modified sync contacts from exportedIds
Update exported pkgconfig version