Simplify [Imap_sender]

We let Imap_sender access the input channel to request continuation
requests directly instead of returning `Cont_req with a continuation.
[Imap] no longer uses lwt.syntax
Rearrange [msg_att] type
Add [msg_att_handler] argument to [Imap.fetch*]

This allows to process the FETCH responses as they come, without needing
to store them in a list previously.  This is useful for potentially
big (e.g. message bodies) responses.