[BUGFIX] Support parsing of XML files larger than 10 MB

EXT:impexp may run into memory limits when converting XML to PHP
arrays, even before all PHP memory is used up, because libxml has a
specific limit of 10 MB. This limit can be turned off by using the
`XML_PARSE_HUGE` (libxml) or `LIBXML_PARSEHUGE` (PHP) option, but
only for the DOMDocument implementation of libxml, and not for the
current XmlParser implementation.

By replacing the XmlParser implementation with a DOMDocument
implementation, larger XML files can be parsed with lower peak memory
consumption as a side effect. For example, parsing a 4 MB dummy XML
file consumes

56.03 MB (memory) / 168.72 MB (memory peak)

with the XmlParser, while using DOMDocument reduces the consumption to

56.15 MB (memory) / 60.08 MB (memory peak).

Besides the replacing of the implementation, XML parsing has been moved
to separate classes (XmlEncoder / XmlDecoder), fully covered by tests,
and restructured to reduce the number of required parameters to a
minimum. The functional scope was not reduced in any way.

Resolves: #83580
Releases: main, 11.5
Change-Id: Ic3345d539f028d766b49d01096ec34a6190a6dfe
52 jobs for main.70814.49 in 11 minutes and 43 seconds (queued for 9 seconds)
Name Stage Failure
phpstan php 8.0 pre-merge Main
Removing bin/
Removing index.php
Removing typo3/index.php
Removing typo3/install.php
Removing typo3/sysext/core/bin/
Removing typo3conf/
Removing vendor/
HEAD is now at 047912278f [BUGFIX] Support parsing of XML files larger than 10 MB
ERROR: Job failed: exit code 1