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.
Need to special case fields of type: `Boolean`, `Date`, number types, etc. (using the `XBlock.FieldType` type not the python type)