More robust message parsing

This replaces the usage of attributes from the System.Xml.Serialization namespace, as discussed in #3.
Now that I read the code, I think I am not very happy with the name of the module *Document*. Or perhaps the name of the discriminated union *EmailDocument* could be renamed to *DocumentType*...