Bug 887564: Do not show phone # in name edit field

Previously the contacts_list code would overwrite the givenName field in
the contact object.  This was done so that different values could be
shown in the list if a name was not present.  This causes problems, though,
when the contact object is shared between multiple parts of the app.  In
this case the contacts_form code was getting handed one of these modified
contact objects.

Modify the code to calculate the display name, but not modify the contact
object itself.  Also refactor how contacts_list refresh() works when given
a contact object instead of an ID.  The previous code was a bit confusing
and called remove() twice for objects.