Fix some LMTP issues when there are too many open file descriptors

If stage file could not be created due to open file descriptors limit, do not
try to create the stage directory (which usually already exists). This changes
the previously misleading error logs from
  ... couldn't create stage directory: /path/to/stage./: File exists
  ... IOERROR: creating message file /path/to/stage./27747-1360844465-0: File exists
to a more direct
  ... IOERROR: creating message file /path/to/stage./31842-1360844580-0: Too many open files in system

When spooling message, handle staging failure. Prevents triggering a fatal
assertion with the following LMTP response
  421 4.3.0 lmtpd: Internal error: assertion failed: imap/append.c: 891: stage != NULL && stage->parts.count
which becomes the nicer (non fatal) response
  451 4.3.2 cannot create temporary file: Too many open files in system

When appending message from stage, ensure we could open the file for parsing.
Prevents triggering a fatal assertion with the following LMTP response
  421 4.3.0 lmtpd: Internal error: assertion failed: imap/mailbox.c: 2731: record->size
which becomes the nicer (non fatal) response
  451 4.3.0 System I/O error