make Program derive Show
make inboundEdges, outboundEdges more normal; add edgesAffectedBy
update() calls come after data modifications to avoid inaccurate values
fix bug to do with empty program
add waits: removes redundant update propagation
Constant resolution and inlining, removal of a lot of Identity cruft