Fn handling refactorings.

@frankshearar this is more or less what I thought about when we talked about `letfn`.

Pro: `defn` is so much better now

Cons: instead of getting pretty green/red on the letfn sample, I get an orange and white (run lein test and open sample.html to see what I mean.
That's a general macroexpansion line-tracking confusion, something we should fix in the general case if we can... But we haven't yet. Amend the sample test case to show the failure mode.

This will happen whenever function body is not a list.