Refactor Conversation to make state update easier

Conversation is now mainly a wrapper for a ClientConversation instance,
which provides properties like the current participants.
Make syncallnewevents use schema for parsing