This removes the need to define these classes and their parser/printers in C++.
Depends On D94133
This seems orthogonal to PDL, can you split it out?
Rebase
Looks neat! :)