Allow message content fetches while a sync is in progress
Currently, when a full sync is taking place (for example when there's a UID validity mismatch, or when a new folder is being opened), we are unable to trigger a message content fetch until the sync has finished. This is because the connection lock is held by the sync and the content fetching job times out. A solution would likely involve having a separate thread and server connection just for message content fetches.
Since syncing will happen in a different thread, if some messages can be removed in the meanwhile, the message content fetch needs to also check if the message still exists before trying to update the database.
On second thought I think when a UID validity mismatch is detected, maybe we shouldn't even download the message content because we will be downloading for the wrong UID that we have locally. Is this assumption correct?
Message fetch connection is now implemented.