Test free variables, fix issues with finding vars in lambda
Does not implode on `function` followed by non-lambda term.
Can find variables bound by the enclosing context, even when they have function names.
Function extraction tries to find rebound function names in context.
Remove unneeded function
Remove another unused function.
Find bound function name in bound-variables
Refactor let extraction
Inserts new values into let expressions in defuns