Rename EventModel::enableContactChanges to setResolveContacts

The old function is kept for API compatibility, but the behavior may
subtly change in the future.
Add ContactResolver class

ContactResolver resolves contacts matching a list of events, and emits a
signal when all events have been resolved (successfully or not). It's
currently built on ContactListener, but could be made more efficient by
using SeasideCache directly later (e.g by handling results from the
cache instantly, and reducing address comparisons). It is intended to
eventually evolve into an API that can replace the bad ContactListener
API entirely.
WIP Use ContactResolver for eventReceivedSlot
WIP Debug and timing for contact stuff
Add contact cache and pending list to ContactResolver
Remove contactCache from EventModelPrivate
WIP Disable contactCache use in RecentContactsModel, needs refactor
Set up contact listening on setResolveContacts

Before, this was inconsistently enabled after the query was executed, in
a very bug-prone way. It's cheap to enable on an empty model.
Asynchronously resolve contacts for EventModelPrivate::addToModel

To preserve the current API (for now), a synchronous option is offered
that will insert the event immediately regardless of contact resolving,
and update asynchronously if necessary. This is used only by
EventModel::addEvents, and can be removed once that function is made
asynchronous.
Port RecentContactsModel to new event contact resolution