Introduced Value, detached from AST.
Moved AST helpers to `ast` module in test helper.
Made `eval` return `Value`s.

Most of the tests are broken because of this.
I'm fixing them in the next commits.
Added Value::PrimitiveFn.
Made primitives look like normal procedures and moved them to `primitives::`.
Fixed stack-overflowing benchmark.
Merge pull request #22 from razielgn/values-detached-from-ast

`eval` returns `Value`s, `AST` is just for input.