Bug 1070429 - [email/IMAP] premature saving leads to missing bodies

I suppose that is fine for now.

In the far future, it would be good to convert the latch mechanism such that it can resolved and rejected, and `results[name]` is an object with a resolved: and rejected: properties, so we can more explicitly pull errors out. That and/or, just move away from the "pass callback as last arg to function" mixing with these promisy structures.

I keep getting confused with latch, and its possible genericness, and its useful concept, and the "let's agree the latch.defer() functions passed around are pinky-swearing to do the error-first node callback thing". For this review, I feel super paranoid about doing that bookkeeping and tracing manually. Having the test suite helps assuage may guilt by possibly missing something though.

It may be that I'm looking at this too generically, and due to my own failings, not as familiar with the cultural rules in gelam, maybe that is the only usage style for latch.