Added general purpose evaluation operation
Rewrote interprete to use evaluate
Fixed eval allowing top level returns