GROOVY-6139: Redesign: Lexer-based completion
Refactor ReflectionCompletor class into several smaller completors
Uses Lexer instead of identifying the completion part via string methods
Allows whole-buffer context aware completion
Completes many but not all expressions where statement before dot can
be evaluated without expectable side-effects. Refuses to complete where
completion would require evaluation of e.g. "foo()" or "foo each"
However, it still evaluates operators, getters and "[]" expressions, which might
in some cases perform long-running operations or even have side effects.

Examples that will now complete, but did not before
"foo".
"foo".chars.

Multiline:

x = [1,
2].

y = """start
end""".
Merge branch 'lexer_complete' of https://github.com/tkruse/groovy-core into tkruse-lexer_complete

Conflicts:
	subprojects/groovy-groovysh/src/test/groovy/org/codehaus/groovy/tools/shell/GroovyshTest.groovy
	subprojects/groovy-groovysh/src/test/groovy/org/codehaus/groovy/tools/shell/ReflectionCompletorTest.groovy

resolved