Redesign: Lexer-based completion
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 and "[]" expressions, which might
in some cases perform long-running operations or even have side effects.
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("
Preference to disable import-class-completion
Also complete Filenames in open strings
Use stack instead of counter
test without mock