Implemented IntermediateSerializer.Deserialize

This PR implements `IntermediateSerializer.Deserialize<>()` and replaces the implementation of `XmlImporter` with it.  All the unit tests added in #2655 successfully pass.

I fully expect there to be holes in the implementation and cases we're not handling.  Please submit bug reports with specific cases that we're not handling correctly.