Reads XML from a char array.
Assumes a state-less character encoding containing ascii as a sub-set,
and where no byte in a multi-byte character is the same as a xml special
character. Any bytes with high-order bit set are treated as if they
are letters, and can be part of names.
Handles CR/LF, CDATA, entity references, processing instructions, DOCTYPE,
as well as the obvious (text, element, and attributes).