[qtcontacts-sqlite] Improve aggregation heuristic

Previously, sharing a phone number or email address was sufficient
to cause two contacts to be aggregated.  If the name does not match,
however, they should NOT be aggregated (eg, family members sharing
a phone number or an email).
[qtcontacts-sqlite] Cache detail tables queries

Previously, the detail table queries were built and prepared each
time they were run during either the creation or regeneration of
an aggregate.  This commit ensures that the prepared queries are
cached for later re-use.  In particular, this improves the perf
of batch updates of existing contacts, as this would trigger
regeneration of each aggregate (and for each regeneration, the
queryContacts() function is called once per aggregate).
[qtcontacts-sqlite] Use setForwardOnly() on SELECT queries

Previously, only the cached queries in the writer had setForwardOnly
set to true.  This commit sets this flag for SELECT queries in the
reader, to reduce memory usage while iterating over result sets.
Merge pull request #43 from chriadam/cachequeries

[qtcontacts-sqlite] Cache detail tables queries
Merge pull request #42 from chriadam/aggquery

[qtcontacts-sqlite] Improve aggregation heuristic
Bump version for release
[qtcontacts-sqlite] Add status flag for online

A contact is considered online if it has any presence state that is
not offline or unknown.

Also ensure that qtcontacts-sqlite-qt5 installs headers to a
different location to qtcontacts-sqlite.
Merge pull request #44 from matthewvogt/online-flag

[qtcontacts-sqlite] Add status flag for online
[qtcontacts-sqlite] Add support for filters matching QContactStatusFlags
Merge pull request #45 from matthewvogt/match-flags

[qtcontacts-sqlite] Add support for filters matching QContactStatusFlags
Fix test data changes causing new failures
Merge pull request #46 from matthewvogt/fixup

Revert test data changes causing new failures