Fix unpleasant issue with (remove_item) more elegantly. Instead of
taking an untaking the ref-lock thousands of times, and trying to
free messages inside the loop (while cobbering their uid to encourage
message_info_free not to do an unsave hash table removal, inside the
g_hash_table_foreach_remove loop).
Instead - we now just build a list very quickly of the messages we
want to drop. As such, the hash table iteration will be ~instant,
and we do not need to take / drop the lock each iteration, simplifying
and perhaps accelerating the code. We then free the messages later
before releasing the summary lock.