xsd-fu: Further work for C++ metadata store generation

This PR contains changes to `xsd-fu` to allow the `OMEXMLMetadataStore` to be generated; this is not included at this point, but contains all the groundwork for it which is ready to be merged, taken from the cpp-omexmlmetadata branch.  The main changes here are:

- use of absolute namespaces to allow type resolution in any namespace
- removal of Java-specific class name resolution for Shape and LightSource
- generation of const and non-const getters to allow for non-modifiable and modifiable model objects to be returned
- additional work on the type properties, including fixing the C++ metadata store types, which have been split into separate argument and return types
- avoidance of trigraph generation for C++ portability (they exist for all versions prior to C++11)
- header introspection to allow generation of dependent includes for all use cases
- OMEXMLMetadataRoot class added