[libcontacts] make sure UpdateRequest processing continues

The logic for scheduling UpdateRequest events broke down when
m_contactsToAppend went empty during a fetch request; even though
more contacts were coming in through contactsAvailable, no more
UpdateRequest events would be scheduled until the whole request
was complete.

Fixed by making m_updatesPending the definitive flag for whether
there is an UpdateRequest event on the queue, rather than leaving
it on during the whole fetch request.

This change is safe because the flag was only inspected by the
requestUpdate() helper and had no side meanings. Now all
UpdateRequest event scheduling goes through requestUpdate().
[performance] get all extra metadata at once if possible

Doing multiple queries for this also meant multiple model updates,
and multiple contact field parsing on the sqlite side.
[libcontacts] Prioritize requests that make app startup more responsive

startRequest was changed to give priority to ensureComplete and
addressResolve calls.
do favorites model first