Fix the do/progn in defn bug

This addresses #59, and adds some tests.

The AST generated by the do and do-less versions appear to be the same, and all the expressions in "do-enabled" branches are still executed, which makes me confident the change is right.

Cheers,