C++: Implement MetadataConverter

Implement MetadataConverter in C++.  The logic is identical to the Java implementation.  The public interface and internal implementation differ.

The Java code was quite verbose, full of exception handling.  This is factored out into a templated helper in the C++ code, which makes the logic much more concise and readable.  It also requires the getter and setter types to match, so enforces consistency of the store/retrieve interfaces (a few inconsistencies are fixed).

I also added a consistency checker script which compares the methods in MetadataStore/Retrieve with MetadataConverter to look for missing metadata conversion.  I found and fixed up a couple of instances.
One broken exception to this is setMaskBinData which doesn't have a corresponding getter; is this intentional or does getMaskBinData need adding?

--------

Testing:

- Build should remain green
- No unit test for this yet until we have an OME-TIFF reader or some other means of creating a full metadata store for conversion.