Rewrite tree-shake using update-forms

Because the existing implementation was causing reordering. And it was
just an ad-hoc inline implementation of update-forms.
Comment style
Rename var-name to var->sym
Add eval-in
Fix promote-method to create defs

Simply analyzing a def form does not re-evaluate it, and consequently
Oxcart was producing lots of unbound vars with no metadata. The unbound
part isn't such a problem but the latter is when I'm trying to look for
^:single and ^:static in the emitter.
Bugfix: rewrite-fn could return a non-fn AST
WIP
Hello world with ASFn