Handles toplevel constant lookup
Add assertNull
Some experiments, trying to build types with certain properties

Didn't succeed, not entirely sure why not
Some comments
Add experiment
Stupid notes
Trying to rewrite interpreter one more time *sigh*
Moving towards a more OO style *sigh*
Some refactoring
Readd tests on assertNextExpressions
Throws an error if attempting to evaluate past the end
Refactor tests
Handles string literals
Rename AstExpressions -> AstExprs
Remove the scratch notes

I think I got out of them whatever there was to get
Remove "Ast" prefix from Ast values

It's smart enough to know which ones we mean.

Does mean its less greppable, but the number of places we need to know
about some specific ast value is probably limited to the parser and the interpreter
and their tests. Also, the verbosity of everything has been getting annoying
Shorten some Ast names

SetLocalVariable    -> SetLvar
GetLocalVariable    -> GetIvar
SetInstanceVariable -> SetIvar
GetInstanceVariable -> GetIvar
MethodDefinition    -> Def
Sets and gets local variables
Interpreter parses JSON null as "None" node

Using `nil` was causing it to go interpret that code and find intermediate values.
This was causing fkn confusing errors, e.g. the code `Object` would evaluate to
Constant(Nil, "Object"), it would then evaluate the `Nil` to get world.rubyNil,
which is an object, so intstead of returning world.objectClass, it returned
first world.rubyNil from the ns evaluation, and then world.objectClass from the
constant evaluation.
Can lookup constants