Nearly working arity reduction code
Allow for passes to emit forms when updating forms
Fix arity count token in varargs case
Add the rewriting pass

Mad props to @Bronsa for the var to symbol hack
Stupid typo
Fix whole-ast pass behavior

 - save the reduction map for later
 - don't clobber pass history due to rewriting
 - emit the appropriate metadata on new defs
 - don't rewrite previously rewritten fns
Removed unused defn
Move var-name to util
Move update-through-meta to passes
Add tests for fn-reduction
Bugfix: overwrote the name local

The name local was bound to the name of the fn being restructured,
however I was rebinding it to the name of the wrapping def when this
wasn't the intended behavior. This patch fixes this issue and the
related test.
Update with time worked on this feature
Merge branch 'feature/reduce-fn-arity' into develop