Refactor variables handling

introducing Variable objects, all functionality stays the same at this
time
fixed #174, eliminate UpvarReferences in evaluator

replace UpvarReferences with references to Variable objects, fixes
upvar scope issues