Re-write XmlVisitor to use XMLWriter and handle CDATA

Related to  #341 

* Use XMLWriter instead of SimpleXML to write XML has native CDATA support
* add test to handle html in element content
* use XMLWriter to escape as CDATA if found