Traverse declarations instead of compile units

Turns out that translation units come late, so codegen had already run before
we interposed.
Include better expression coverage