Improve parser for repl

Now it can parse not only sexpressions, but all valid terms, such as
literals and identifiers.
Add implicit blocks for modules

Now when *source file* is parsed - parser automatically assumes that
block is defined on top of the file. I.e., instead of writing
{
  (define (factorial x) (if (= x 0) 1 (* x (factorial (- x 1)))))
  (print (factorial 10))
}

one could simply omit the block declaration.
Merge branch 'master' of https://github.com/dmand/idea-lisp-in-prolog

Forgot to pull, eh.

*There could be a funny joke like ('some day your father forgot to pull, too'), but there isn't*