bluez: Remove unnecessary OBEX List() D-Bus call

It returns a mapping of VCF filenames to contact full names, which we
already have from the full VCF file. Minor performance improvement
(although I haven’t profiled it).

https://bugzilla.gnome.org/show_bug.cgi?id=711827
core: Tighten up definition of Persona.display_id to ensure it’s unique

It is defined as being unique, so cannot be a human-readable full name,
since those can be non-unique. Update the EDS, oFono and Tracker backends to
use their persona IIDs as display IDs, instead full names. This isn’t an
API break, as the API was always documented as being unique.

https://bugzilla.gnome.org/show_bug.cgi?id=711827
bluez: Support updating contacts instead of replacing them when re-querying

When downloading the contact list over PBAP for anything other than the
first time, support updating the properties of existing personas, rather
than replacing them all wholesale. This is a step on the way towards
supporting periodic refreshes of the contact list.

https://bugzilla.gnome.org/show_bug.cgi?id=711827
bluez: Implement periodic refreshes of the persona store from the phone

This implements two major changes:
 • Downloading contacts now happens in two phases. In the first phase, only
   textual properties are downloaded (not contact photos). This is fast,
   taking only a few seconds to download several hundred contacts over
   Bluetooth. In the second phase, contact photos are downloaded in the
   background and personas are updated to use them.
 • Contacts are periodically re-downloaded on an exponential timeout
   leading to a linear region. This keeps the persona store up-to-date with
   changes in the phone’s address book.

For full details, see the documentation on
BlueZ.PersonaStore._schedule_update_contacts().

https://bugzilla.gnome.org/show_bug.cgi?id=711827
bluez: Eliminate a reflexive reference in Bluez.PersonaStore

Since the persona store is always scheduling the next update, it always
holds a reference to itself in the timeout closure, which is
unavoidable. Add a cancel_updates() internal method which can be called
by the Backend to break this reflexive reference and allow the store to
be finalised.

https://bugzilla.gnome.org/show_bug.cgi?id=711827
bluez: Don’t block on cleanup finishing when updating contacts

This speeds up updating the contacts, and also elimates the possibility
of Vala’s async state machine getting into an illegal state, which
somehow happened before.

https://bugzilla.gnome.org/show_bug.cgi?id=711827