Fix autocompletion of map keys

Maps can contains strings with characters that can be interpreted differently,
to prevent it, completions of such entries will be surround with double quotes (")

Escape special characters in completions
Use single quotes insted of double-quotes

Escaping dollar sign ($) is no longer needed
Move code to NavigablePropertiesCompleter
Support only Strings with printable chars

Complete will work only for keys that are Strings that could
by typed. New lines and tabs and slashes will be escapded.
Allow only strings without control characters
Fix identifier and quote only keys that must be
Fix typo
[GROOVY-6623] Interpreter mode for groovysh, with caveats
Now works:

    groovy:000> def x = 3
    ===> 3
    groovy:000> x
    Unknown property: x
    groovy:000> :set interpreterMode true
    groovy:000> def x = 3
    ===> 3
    groovy:000> x
    ===> 3

Now fails (Type/method declaration on same line as statement):

    x = 3; class Foo{}
    x = 3; def foo() {}
Make regexp check more clear and documented
GROOVY-6784: @ThreadInterrupt is not compatible with @CompileStatic
GROOVY-6784: Fix unit test
GROOVY-6810: fix usage of "this" in nested AIC
Add unicode test case
Merge pull request #355 from tkruse/interpreter_mode_simple

[GROOVY-6623] Interpreter mode for groovysh, with caveats
[GROOVY-6623] Interpreter mode for groovysh, with caveats

added/updated license header
Merge pull request #419 from janisz/master

Fix autocompletion of map entries in Groovy shell