Refactor: Don't do heavy lifting in UI thread when loading Conversation

This refactors the way we load a conversation. Basically, it changes two things:

1.) The conversion Cursor -> List<MessageRecord> happens in the loader (i.e. not
in the UI thread). This is useful since this includes decrypting the message, something
that could possibly block the UI thread if it's done on too many messages.

2.) The new system allows us to append messages to the list of already loaded messages.
Thus, in a second step, we can refactor the loader to load only a certain number of messages
and re-issue a loader request if the user scrolls too far up.