This avoids creating refcounted strings during evaluation and makes it easier to use the same parsed string in multiple places (should be useful once we implement functions).
Seems that we can parse most things now :). Assignments don't work yet, thoug. Also we're currently leaking memory pretty badly.