Use ConversationManager for private message retrieval
ConversationActivity is a big mess. One of the issues is that it needs to collect messages from various clients. This MR moves the message retrieval into the
ConversationManager, so it can also be used by the headless client (#1254 (closed)) for the same task.
For the latter, a clear and concise API is important, so this MR also cleans up the various PrivateMessage classes, removes redundant fields and methods, flattens the inheritance hierarchy, etc.
We haven't had real core bugs in some time, so to not let us get too bored, this MR makes this a lot more likely again :P On the bright side, it removes more code than it adds.
One step closer towards finishing #384