[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.