PR for UID EXPUNGE to achieve MOVE semantics


Hello maintainers and others,
I am using IMAPClient for a project, and have a need for single-message MOVE semantics. I saw the comment on this issue "...implement the MOVE extension to the UID command."
Unfortunately, we need a patch to to get it to support 'UID MOVE' - it won't issue 'UID <command>' unless it supports <command>.
I can achieve the semantics I want with:
COPY m other_folder
(UID EXPUNGE is desirable to avoid expunging every deleted message in a folder).
So I put together this change to allow for UID EXPUNGE, based on the 1.x branch:
The idea is to overload arguments to expunge(): if messages are specified, do a 'UID EXPUNGE <messages>', else it is a folder-wide expunge(). The former won't work if use_uid=False. I don't have insight how many IMAPClient users turn off uid's. 
This also implements item on the list for
That change also adds a livetest, which asserts that only the specified message is expunged, and other Deleted messages remain.
If that change is within the ethos of the project, I'll submit a PR (to 1.x? master?). Otherwise, I'd like to figure out a way to achieve MOVE without a global expunge.
Dave Brown
PS - I'm unsure what should be the return type from UID expunge. It's currently None, but should probably be whatever is the response payload, but I haven't sorted out the helper methods needed to achieve that. If the change is on the right track, I'll try to figure that out.

Join to automatically receive all group messages.