extract eval stuff to its own namespace, add more builtins
correctly handle if and let* special forms