Let guile handle the message-map (with weak-hash-table), so we avoid the
cleanup race.
Better handle the fd handling (and avoid calling gc() each time when
we're nearing the limit)
For the list building, using cons is much faster. So traverse the results
_backwards_, and then cons gives us the right order.
Don't eval when creating the list, but do so lazily (when requested in the
message, in mu-scm.scm)
Implement accessing the MIME-parts + docs + test.
Implement saving attachments to file.
Implement creating messages from files.
Refactor / rename functions to be more uniform.
SCM exception are "non-local exits", which mean that c++ objects don't get their
DTOR called when leaving the scope.... this break RAII, leaks mem etc.
So instead, we avoid SCM exceptions (where we can), and throw C++ exceptions,
and only use SCM-expections in the catch block.
Implement support for "header" and "body" procedures, with require loading the
message file from disk, and create a foreign object for the message.
We keep those alive in a vector, and hook up a finalizer.
Update docs & tests as well.