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.
It'd be good to test subtly invalid xml to ensure it raises the right exceptions? I guess the question is whether there's a reasonable way to test the xsd (not to test lxml).