More robust message parsing

This replaces the usage of attributes from the System.Xml.Serialization namespace, as discussed in #3.
As long as the public API is not involved with XML parsing we can add exception handling at the application entry point.

Otherwise, the XML parsing should be moved inside the public API (where I think it would make sense to consider #6).