Clone vars when evaluating functions so we don't clobber `x`

See the added test for an example of when this is problematic. Basically `x`
can take on different values at different times during the evaluation of an
expression.

Test Plan:
Run the new test in test.html and see that it now passes

Auditors: alex