C++: Additional metadata additions

Additional MetadataTools and related additions.  These are all fairly straightforward changes.

- Use ConvertMetadata
- Add DimensionOrder creation from string
- Add merge/keys methods to MetadataMap

--------

Testing:

No users of ConvertMetadata yet, and no unit tests.  The latter two changes have unit tests.