Add an XML external entity loader.

This allows the use of "data:" and "compress.zlib:" in entities and URIs.

Fixes #2329.
I used File::Open() instead of Wrapper::open(), because I thought the initialisation of file->m_name etc. looked useful. Did you have a different rationale?