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 and make, and look under cpp/lib in the build tree; note that with the xsd-fu changes, source generation is no longer a side-effect of the cmake run; it's now (correctly) only driven by make, with cmake only generating make targets]

For the `xsd-fu` changes:
- the changes are all in the sphinx documentation for reference
- if the travis and jenkins builds pass, the changes are functional
- debugging may be tested by adding a `--debug` argument to `ant/xsd-fu.xml` and comparing the source output to without; you'll see about 10,000 lines of useless comments added, plus a whole bunch of useless output on the terminal (we could reduce this--I don't see much value in the code output here)
- for the dependency output, just run any xsd-fu command with `--print-depends` and you should see a list of dependent filenames output (add to `ant/xsd-fu.xml` to see it for all cases)
- to test the dependency tracking, run the cmake build, then touch a single metadata template or model template or schema file, and run make again; you will see regeneration and rebuilding of the appropriate source files, i.e. if you touch the schema everything will be regenerated but if you touch a metadata template then only the metadata sources will be regenerated.  We can make this finer-grained if desired to allow rebuilding of individual files rather than groups of files, but the initial aim is correctness for what we have at present

The `xsd-fu` changes complete the major changes I needed to make to support proper C++ source generation and `cmake` integration.  There are some additional improvements needed on the `cmake` side, which will be addressed separately.

The source isn't formatted absolutely perfectly at present--there are some minor indentation irregularities, so it could be tidied up in the future as well, but this will not affect its functionality.  Mainly just indentation of multi-line function declarations and definitions due to limitations of the templating system.