mkapidocs.py: reworking the doxygen XML parser

This is a rewrite of the parsing logic that reads doxygen XML files
to provide a better object model.

The intention here is to use doxygen to parse the C++ code, so the
types and type hierarchy can be read. Then, this script can parse
API documentation and generate the HTML documentation.

This has several benefits:

  1.  The documentation with type association will be more reliable
      across doxygen versions (addressing bugs in doxygen).

  2.  Provide consistent namespace scoping.

  3.  Create additional helpers, e.g. auto-generate/auto-update the
      documentation skeleton.

  4.  Better diagnostics w.r.t. missing documentation.

  5.  Better diagnostics w.r.t. documentation on non-existent types.

  6.  Control over the documentation format (can make it a custom
      markdown-like format).

  7.  Better control over the HTML code (HTML5, WAI-ARIA, RDF
      metadata support, etc.).

  8.  Better control over the HTML structure -- fit into the layout
      and structure of the Cainteoir Technologies website
      (breadcrumbs, etc.).

  9.  Better control over the documentation structure.

This rewrite currently supports:
  *  compounddef
  *  basecompoundref
  *  memberdef (generic)
  *  memberdef (@kind = variable)
  *  memberdef (@kind = function) -- partial

NOTE: This is a work in progress.