cpp: Add metadata interfaces and implementations

No tests as yet.  This is the initial conversion of the templates, plus the needed classes to support their compilation.

I would suggest reviewing:
- the static (non-generated) classes in the diff
- the templates themselves (a whitespace-omitting diff between templates-java and templates-cpp for the different templates will show the changes)
- the generated code in cpp/lib/ome/bioformats/meta [just run cmake]

These are still some remaining changes needed in xsd-fu to fully complete the code generation, but these are more to do with supporting building than affecting code generation.  The source isn't formatted perfectly at present, so it could be tidied up in the future as well, but this will not affect its functionality.