avoid reapplying limit patterns on already-limited emails
currently, whenever we update the index, we also re-apply the index
pattern on all messages. this is problematic because (a) this can be
slow and (b) if a user has been working with a limited index, an
incoming new message can suddenly alter that index.
we attempt to avoid re-applying the limit to all messages, and instead
only apply it to new messages. to do this, we keep track, in the `Email`
struct, of whether the message has already had the limit applied via a
boolean `limit_visited` flag. we retain existing visiblity settings for
those messages, and only apply new visibility settings when
`limit_visited` is not already set.