[qtcontacts-sqlite] Correct the detection of inadequate names

When copying the name to an incidental local contact, the name should
be used as long as it contains a first or last name element.
Merge pull request #111 from matthewvogt/correct-name-detection

[qtcontacts-sqlite] Correct the detection of inadequate names
Fix autotest broken by change to store date for birthday details

Birthday details were converted to store date information only, to
remove the relevance of timezone from the stored data.
[qtcontacts-sqlite] Simplify reader/writer instantiation
[qtcontacts-sqlite] Support functions for two-way sync adaptors
Use typedef to simplify declarations
[qtcontacts-sqlite] Report changed sync targets
Fix composition of gender detail update
[qtcontacts-sqlite] Create interface for out-of-band storage

Allow clients to store out-of-band data in the contacts DB, which will
be kept in sync with contacts data manipulations.
Use definition mask to minimize writes during aggregation.
Avoid conversions from internal to API ID when calling readContacts
Remove obsolete TODO
Rearrange SQL query for improved consistency.
[qtcontacts-sqlite] Fix aggregation query where subject contains multiple details

The old version did not expand correctly where the subject contained
more than one email address, or phone number, or online account.
Remove unused timestamp parameter
[qtcontacts-sqlite] Use temp table to find modifiable details
Remove invalid TODO comments
[qtcontacts-sqlite] Ensure detail comparison verifies key/value matches
[qtcontacts-sqlite] Remove obsolete context type definitions

These values are no longer used.
[qtcontacts-sqlite] Create sync-target constituent when required

When storing added details received from an external source, create
a constituent contact for that sync source if necessary to store the
new details.