More robust message parsing

This replaces the usage of attributes from the System.Xml.Serialization namespace, as discussed in #3.
How about removing this test case *if* we ever add a 2015 version?

That's actually what I was thinking when I was writing this particular test case but I didn't really have other arguments to remove it.

(Do you think we should remove it?)