More robust message parsing

This replaces the usage of attributes from the System.Xml.Serialization namespace, as discussed in #3.
Doesn't it include a built-in risk that unknown messages are lost, without anyone noticing?