[contactsd] Trigger contacts-sync profiles when changes are detected

This commit adds logic to allow triggering of contacts sync profiles
when changes signals are received.  In order to be triggered, a profile
must be a contacts profile, it must be enabled, it must have to-remote
or two-way directionality, and it must have the always-up-to-date
setting set to true.
Merge pull request #64 from chriadam/alwaysuptodate

[contactsd] Trigger contacts-sync profiles when changes are detected
[contactsd] Process deletions before additions

A sync batch cannot include the same contact in both the deleted
set and either added or modified sets.  However, it is possible that
a contact could contain a detail, then be deleted, then a subsequent
creation/modification could include a detail that conflicts with the
first detail.  Therefore, we should process any deletions in the
batch prior to any other modifications, so that such cases do not
result in conflicts.
[contactsd] Handle mangled detail URIs correctly during export

Detail URIs in aggregate contacts are mangled to prevent accidental
clashes with unique values in constituent details. The mangled
forms include aggreagte ID values; since these vary between the
privileged and nonprivileged databases, the mangled forms must be
translated between their correct form for each database.
[contactsd] Add configuration variables for exporter

To enable debug output, set /org/nemomobile/contacts/export/debug to
a non-zero integer value.

To disabled export activity, set /org/nemomobile/contacts/export/disabled
to a non-zero integer value.
Update dependency version
Merge pull request #65 from matthewvogt/exporter-fixes

Fixes to DB exporter logic
[contactsd] Do not fail sync due to removing non-existent contact

If are contact that we intend to remove is not found in the export
database, continue without the removal.
[contactsd] Do not abort export sync if updates are applied

The export plugin does not apply changes transactionally; we should
not abort a sync if some changes have been applied, since partial
changes will then accumulate.

If add/modify changes are successfully applied, then do not abort
sync because removals fail, or because the self contact cannot be
updated.
Merge pull request #66 from matthewvogt/remove-failed

[contactsd] Do not abort export sync if updates are applied
[contactsd] Suppress unwanted presence change events in third-party database

Apply contact changes from the primary database so that changes that
generate the contactsPresenceChanged event in the primary database
produce that event in the third-party database also.
Merge pull request #67 from matthewvogt/export-presence-updates

[contactsd] Suppress unwanted presence change events in third-party database
[contactsd] By default suppress import from export DB

Import of changes applied to the export database is currently an
unnecessary complication.  Unless the '/org/nemomobile/contacts/export/import'
configuration variable is non-zero, do not import theses changes.
[contactsd] Handle deletions from export DB without imports

When import-changes-from-exported-database is not configured, changes
made to a contact in the privileged database cannot be applied
directly to the export DB if the updated contact has been removed.
In this situation, the changes need to be converted to a re-addition
of the modified contact in its new state.