More robust message parsing

This replaces the usage of attributes from the System.Xml.Serialization namespace, as discussed in #3.
In many cases an unhandled exception is thrown, e.g.

```
<?xml version="1.0"?>
<email xmlns="urn:grean:schemas:email:2014">
  <foo>
    <smtp-address>foo@foo.com</smtp-address>
    <display-name>Foo</display-name>
  </foo>
  <bar>
    <baz>
      <smtp-address>bar@bar.com</smtp-address>
      <display-name>Bar</display-name>
    </baz>
  </bar>
</email>
```

Without validation it *is* possible that valid XML messages with invalid format might get processed and deleted, e.g.

```
<?xml version="1.0"?>
  <email xmlns="urn:grean:schemas:email:2014">
    <from>
      <smtp-address>foo@foo.com</smtp-address>
      <display-name>Foo</display-name>
    </from>
    <to>
      <woops>
        <smtp-address>bar@bar.com</smtp-address>
        <display-name>Bar</display-name>
      </woops>
      <address>
        <smtp-address>qux@qux.com</smtp-address>
        <display-name>Qux</display-name>
      </address>
    </to>
    <subject>Test</subject>
    <body>This is a test message.</body>
  </email>
```

This one currently goes through and gets deleted from the Queue (but the *woops* element is never selected).