Hacked in some stuff for vars

But it's atrocious, suffers from the same problems as the -> definition
Corrected Var internal definitions

This is why it's a bad idea to hard code this stuff...
Updated interpreter tests with Var usage
Tweaked set! type signature

Is now `(-> (Var a) a (Var a))` instead of `(-> (Var a) a a)`. I'm not
totally decided on which way is right yet, they both have advantages and
disadvantages.