Merge pull request #5 from chriadam/master

[qtcontacts-sqlite] Improve aggregation unit tests
[qtcontacts-sqlite] Use a semaphore for process mutex on writes

Although SQLite supports multiple concurrent processes, the behaviour
on write contention is undesirable, resulting in starvation.

Use a semaphore to provide mutual exclusion between writing processes
so that only one has write access to the database at any given time.
[qtcontacts-sqlite] Match to existing aggregate in SQL

Reading all aggregates into memory for match testing is not workable
for any reasonable number of contacts.

The match algorithm is now less sophisticated, but if necessary it
can be extended to correspond to the old version.
[qtcontacts-sqlite] Index on fields used in searches
[qtcontacts-sqlite] Use dedicated columns for lowered versions of text values

Conversion to lower inside queries is incredibly expensive, and may
also defeat indexing?
Merge pull request #6 from matthewvogt/ipc-locks

[qtcontacts-sqlite] Use a semaphore for process mutex on writes
[qtcontacts-sqlite] Fix case sensitivity to match documentation

Case-insensitive matching is only required when MatchFixedString is
specified without MatchCaseSensitive.
[qtcontacts-sqlite] Tune contact matching algorithm
[qtcontacts-sqlite] Remove check for IsNot relationships

The aggregate match discovery is done on create, before any IsNot
relationships can have been created for the new contact.
[qtcontacts-sqlite] Build without aggregation switch

Passing tests, albeit with some disagreement on the meaning of case
sensitivity in searching.
Merge pull request #7 from matthewvogt/sql-matching

[qtcontacts-sqlite] Match to existing aggregate in SQL
[qtcontacts-sqlite] Bump version

The recent changes are worthy of a version bump, as create/update
performance is so much better now.
[qtcontacts-sqlite] Index the TpMetadata table

This table is frequently queried from contactsd.
Merge pull request #8 from matthewvogt/index-metadata

[qtcontacts-sqlite] Index the TpMetadata table
[qtcontacts-sqlite] Obsolete qtcontacts-tracker and cubi packages
Merge pull request #9 from special/master

Obsolete qtcontacts-tracker and cubi packages
[contacts-sqlite] Replace JobList with QList for safer logic

The next and previous pointers in a Job were used for three distinct
JobLists, across threads, and used unsafely in several places. That
resulted in a job being infinitely repeated, seen as 100% CPU usage from
contactsd's birthday plugin.
Merge pull request #10 from special/master

Replace JobList with QList for safer logic
[qtcontacts-sqlite] Fix use of a deleted iterator value
Merge pull request #11 from special/master

Fix use of a deleted iterator value