edsf: Avoid Gee.LinkedList in copy_contacts(_ids)
edsf: Avoid Gee.LinkedList in copy_contacts(_ids)

When we receive a signal that adds/removes/changes contacts, we get a
list of the affectefd contacts (or their ID's). Since we process them at
a separate point in time in the main loop, we have to make a copy to
make sure that they're still around when being processed.

The current way we do this, is by creating a `Gee.LinkedList`, and
appending each entry at the end (note that appending an item is an O(1)
operation in `Gee.LinkedList` since it keeps track of its last element).
However, there's some problems with this approach:

* Each time an element is added into the list, a little helper object (a
  `Node`) is allocated. This is yet again just another unnecessary
  allocation that we wish to avoid.
* Iterating over any `Gee.Collection` gives you an owned reference to
  each element, meaning we do unnecessary copies or reference count
  fiddling.

Most of these issues can be solved quite elegantly by using
`GLib.GenericArray` (ie. `GPtrArray`), which will keep track of the
owned references, but won't try to do anything fancy with it.

GNOME/folks,GNOME/folks,GNOME/folks