Ensure conversations that have no email in the base folder are dropped
If a least one email in a conversation that is in the base folder but also in another is removed from the base folder, the conversation may not be removed from the monitor despite possibly not having any email in the base folder, since the email may not have been completely removed from the conversation. This was particulary being seen with GMail accounts where even single message conversations were not disappering when trashed because the converation's email was still in All Mail. This fix does a few things: Avoids hitting the database when checking a conversation still has email in the base folder, when it does check only ensures that email are in the base folder, not *any* folder, and updates ConversationSet::remove_all_emails_by_identifier to do this check iternally, clean up its API and implementation and avoids having to use out args calling it.
Showing with 138 additions and 149 deletions