[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