Add C++ classes

This is all the stuff that Clay had worked on so far and can be used
going forward as the basis for the Java code.