Bug 53968: Add XMLSerializer and use it to produce XHTML

Add a stand-alone XMLSerializer implementation and run it on the Domino DOM.

* Integrated smartQuote feature into the serializer and removed regexp-based
  compressHTML method for faster serialization

Background from the bug:

To make it easy to process our output using both XML and HTML tools, we should
serialize our output to so-called 'polyglot markup'. This means that our
output will be valid XML *and* HTML5 at the same time (effectively XHTML).

The spec for polyglot markup is at
http://dev.w3.org/html5/html-xhtml-author-guide/. The relevant differences to
our current HTML5 serialization should be:

* void elements are serialized with trailing / as in <br/>
* only a small set of named entities is used, other entities are converted to
character entities (&nbsp; becomes &#xA0;)

We can add either add this functionality in Domino, or create our own
XMLserializer implementation that walks an arbitrary DOM.

Change-Id: I7476ee9fe5359c54482b250836316bdba880f847
Merge "Bug 53968: Add XMLSerializer and use it to produce XHTML"