Respect setters when deserializing XmlList, etc.

Previously reflection was always used when deserializing to an XmlList, XmlValue or XmlAttribute. This fix uses setters when available in property metadata.
Merge branch 'patch-1'