Add C++ code generator

LGTM. Although generating C would have the advantage of being able to use cparser.