make all program structures inherit from Program
move default toString() and desugar() methods into the Program object, and out of all the structures that use the default
push OO-style conversion into the compiler, adding default methods for analysis and compilation. Also treat test cases as callExprs, since they're actually primitives built into the runtime