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""".
add 'doc' command for groovysh
Incorporated review comments from Andre Steingress
GROOVY-6150: small tweaks, new tests
fix a test fail, clean code a bit
do not depend on a version of Java SE
Merge pull request #185 from andresteingress/master

GROOVY-4663: fixed test-case on linux
Merge pull request #182 from masatonagai/feature/groovysh_doc_command

GROOVY-6150: Add 'doc' command to groovysh
Groovysh Tests independent of IO
Due to continued mysterious failures on CI server.
Test cases still remain valid regression tests, i.e. they still
fail if the original change in c1f31183c444b is undone.
Merge pull request #186 from tkruse/fix-groovysh-test

Groovysh Tests independent of IO
fix test so it runs on jdk 1.5
fixed typo in comment
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
GROOVY-6143: Groovysh vulnerable to instances with custom getProperty() implementations-
Also adds tab completion for properties that are not non-public fields.
again, fix tests failing on server by avoiding IO based asserts
added missing License headers
GROOVY-6074: Use Jar Classloading to complete import statements.

Examples:
groovy:000> import
groovy:000> import j
groovy:000> import java.
groovy:000> import java.net.
groovy:000> import static java.net.

Also complete Classnames for preimported and imported classes

Example:
groovy:000> Sys<tab>

Before: no completion
Afer: completes to System  (from java.lang.System)

Also:
groovy:000> import java.awt.*
groovy:000> Sha<tab>

now completes to "Shape"

As well imported statics:
groovy:000> import static java.lang.Math.*
===> [import static java.lang.Math.*]
groovy:000> ma<tab>

now completes to "max("
Unit tests for the history Command
Preference to disable import-class-completion
GROOVY-6145: Also complete Filenames in open strings