Use julia parser in REPL completion

Instead of the verbose and error-prone heuristic which was ported from the old REPL to determine whether the completion is requested from within a string, a command etc., this uses the julia parser itself. It has the advantage of being much more accurate of course (it deals with comments, for example). However, I had to refine the output of the lisp parser in order to get more information about what type of incomplete expression is detected, so that instead of only `:incomplete` there are more possible outcomes, such as `:incomplete_string`, `:incomplete_comment` etc. I wonder if that's acceptable.
(In principle, one could parse the error message instead, but that doesn't seem right.)
~~(Another drawback about how things are done in this PR is that the error messages are more verbose and redundant. I did it this way mainly in order to minimize the impact on the code.)~~

This would also be a first step towards implementing things like #6338, although that would require to further split the `:incomplete` tag probably.