Move outputs from IOBuffers to Expr arrays

* The goal is to make it easier to keep track of dependencies and reorder items
* All previous prints to IOBuffers are now expression (Expr) constructors
* Output should be almost totally unchanged at this point

Note that this PR includes and subsumes #83, because without it, `parse` on line 489 complains.  In #83, you indicate that you might make some parsing improvements; if so, I can update this PR in response.