cpp: Add model template, and generate and build model

- Nothing to test at this point other than that it builds and that the generated code looks sensible
- The generated docs have a number of `@todo` comments which show up in the doxygen docs on a TODO page.  These highlight API/implementation issues which need further examination, discussion and work.  This is typically where the C++ API diverges from the Java API, but some points also apply to deficiencies in the Java code generation as well.