Implement XML input/output for AssetMetadata.

@cpennington @dmitchell 
Note that the tests use an XSD to validate the generated XML. The XSD is kept in the test directory for now - but a better place should be found in the future.
XML wants a datetime.isoformat(). I use that and parse it back now in to_xml/from_xml.

I used the subtypes purely for further definition of the types in the future - there's no other need for them.