We should definitely handle presences better.  I am not confident that these changes will work with the way the surrounding code is structured.  I think there are many places in the code where there is an assumption that the UI only gets one contact entry.  For example, if a presence goes offline, there's no code to remove that entry from display.  Also, if the user tries to remove an entry, that will send a roster remove-contact request, which will probably either error out if given a presence, or will remove the entire contact.

I think the multiple-presence commit needs more research before attempting to introduce.