purple: start chat session core/backend mapping rework
Re-joining doesn't really work for Group Chat channels. This is caused by a
mixup between core & backend about chat sessions. E.g. the core knows about the
libpurple chat ID (int). But on connection re-establishment the core can't
identify which channels need to be rejoined (and NOT created again!).
We must separate data belonging to the core (chat on OCS [URI]) and the backend
(PurpleConversation or chat ID). The backend is responsible for the mapping to
and from the core.
Start by writing down all the relevant players in purple-chat.c.