Merge pull request #715 from rleigh-dundee/cpp-base

Initial C++ implementation
cpp: Add doxygen API reference
travis: Build cpp doxygen documentation
xsd-fu: Add C++ enum templates
cpp: Generate and compile model enums
cpp: Add unit tests for model enums
cpp: Create shell fragment with configured version metadata

This can be sourced by any script which needs to know which
bioformats version it's working with.
cpp: Create shell fragment with configured version metadata

This can be sourced by any script which needs to know which
bioformats version it's working with.
cpp: Doxygen generates correct include paths
cpp: Update graphviz version requirement in README
cpp: doc: Update Doxygen configuration
cpp: Document all namespaces, functions and typedefs
xsd-fu: Document C++ Enum template operators
cpp: Correct Color.h documentation comments
merge develop -D org -I include -E exclude: PR 528 (Tile performance improvements for VMS and NDPI)
merge develop -D org -I include -E exclude: PR 635 (Use jgit-buildnumber to set version information in Maven)
merge develop -D org -I include -E exclude: PR 644 (Add support for writing ModuloAlong* annotations)
merge develop -D org -I include -E exclude: PR 722 (ImageConverter: fix dimensions of the last tile (rebased onto develop))
merge develop -D org -I include -E exclude: PR 723 (cpp: Add doxygen API reference)
merge develop -D org -I include -E exclude: PR 724 (cpp: Generate and compile model enums)