[imap] Implement support for QRESYNC extension (RFC5162)
QRESYNC is currently the fastest way to synchronize mailbox: we receive information about messages with changed flags and removed messages already in response to the initial SELECT command, so all we need to do afterwards is to fetch new messages (which is very easily detected).
QRESYNC support is implemented in a separated task from RetrieveItemsTask, because thanks to QRESYNC the command flow is different, and trying to tie that into the general RetrieveItemsTask would be too messy.
There's a potential for creating a common base-class for different RetrieveItemsTask implementation based on the supported IMAP extension (e.g. CONDSTORE), which also has a different flow from the plain sync.
This MR depends on kimap!4 (merged), do NOT merge until that one is landed.