break out Program into its own class and define an iterable API
Move out Program from AST2IR
More comments/documentation