[resolver] Record elapsed time in ContactResolver

This helps with optimization work
Optimize localUidComparesPhoneNumbers function

Using QLatin1String saves us a lot of time in converting the string as
UTF8, and it's a simple function, so inlining makes sense.
[libcommhistory] Speed up ContactResolver by removing looping

- Canonicalize requested addresses so that they can be looked up in hashes
(using a canonicalization that matches what addressMatchesList used to do)

- Fill in all the resolved contacts when the events list is sent out,
instead of looping over all the events whenever something changes.

- Side effect: having lots of duplicate addresses in the events list
no longer slows down contactUpdated processing