[libcontacts] Make contact browsing faster

Pre-fill the cache with contact metadata rather than entire contact
records.  Where a particular address type is required for selection by
an attached model, include that address type in the queried data.

Also allow partially loaded contacts to be completed, and contacts to
be queried by address, whether already present in the cache or otherwise.