[qtcontacts-sqlite] Ensure incidental contact is linked into aggregate

Previously, if a single write caused both a modify of an existing
synctarget constituent plus the creation of a new incidental contact,
the incidental contact would not be linked into the appropriate
aggregate via a relationship.
This commit ensures that the incidental contact is always linked
correctly.
Merge pull request #115 from chriadam/fixincidental

[qtcontacts-sqlite] Ensure incidental contact is linked into aggregate
[qtcontacts-sqlite] Remove childless aggregates after applying sync delta

This commit ensures that if any synctarget constituents are removed
as a result of a sync operation, that any aggregates which are made
childless as a result of the operation are also removed.
Merge pull request #116 from chriadam/removechildless

[qtcontacts-sqlite] Remove childless aggregates after applying sync delta
[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
Remove tests specific to unrelated contact managers
Correct wrong function declarations
[qtcontacts-sqlite] Open non-privileged DB when specified

Privileged processes need to be able to open the non-privileged
database when required. Signals regarding database activity also need
to be handled seperately for the two databases.