More robust message parsing

This replaces the usage of attributes from the System.Xml.Serialization namespace, as discussed in #3.
That's more like a (potentially bad) habit – I can't currently think of any advantage. I will move the code in the console application and remove the new library project.