Completed prototype.

Let and switch obviously are the problem children of the prototype.

To fix them we'll have to build up a graph instead of the actual string
and construct our own variable scopes.