[libcontacts] Update changed contacts progressively

Update contacts in small batches to prevent blocking the UI thread.
[libcontacts] Append contacts to model progressively

Avoid blocking the UI thread when the cache is populated after process
startup.
[libcontacts] Do not emit change notifications during initial contact insert

When a contact is first loaded into the cache, no listener can yet be
interested in changes to that contact.
[libcontacts] Update modified contacts individually rather than in batches

Processing even a single changed contact can consume all the available
time between UI frames, if it causes QML bindings to be re-evaluated.
Merge pull request #57 from matthewvogt/progressive-indexing

Progressively update/append contacts to the cache to avoid blocking UI