Resolve issue #25

So here are the new Variable and Scope classes, along with some friends (such as Expression and Value) that will be implemented later.

A few things still need to be fixed up (e.g. namespaces) but until we have a better idea of how those will work and behave with our ASTs, I'd rather just check this in and worry about it once that becomes necessary.

Similarly, there are no test cases for this branch because much of the infrastructure we need to write them (e.g. Expressions that can be eval'd and return a type) doesn't yet exist.