Environments now store variables in a dict

They hold a reference to the parent environment and lookup variables
recursively.