GROOVY-6570 - Merge of @TailRecursive into groovy-core

fixed a compile issue under jdk 5/6

Added RecursiveListExamples which do not work yet

Added RecursiveListExamples which do not work yet

Added boxed type matching to RecursivenessTester but RecursiveListExamples still do not work

Added one more example test case for RecursiveList. Tests work now - was a build issue.

Added APL2 to all files

Commented out System.err.println in TailRecursiveASTTransformation

Made AstHelper statically compiled

In the midst of making ASTNodesReplace statically compilable. Not finished yet.

Enabled two asserts in TailRecursiveTransformationTest

Got rid of two unused classes

ASTNodesReplacer with @CompileStatic

CollectRecursiveCalls with @CompileStatic

HasRecursiveCalls with @CompileStatic

InWhileLoopWrapper with @CompileStatic

Split-off from ASTNodesReplacer: StatementReplacer

Set source position and node meta data when replacing statements in StatementReplacer

RecursivenessTester uses ClassHelper to box types

Temporamrily switched off @CompileStatic in *Replacer classes since gradle build showed Verify error (although local test runs work)

Moved StatementReplacerTest into the correct subpackage

Rudimentary support for combining @TailRecursive with @Memoized

Added test to verify that sourcePosition is copied on replacement

@Memoized is marked as incompatible with @TailRecursive

ASTNodesReplacer has been replaced by VariableExpressionReplacer

Added javadoc to describe classes.
Added VariableReplaceListener to prepare for static compilation.

Non-recursive method are now reported as errors.

3 more classes are statically compiled now.

ReturnStatementToIterationConverter now statically compiled

Simplified ReturnAdderForClosures by using ReturnAdder under the hood.

TailRecursiveASTTransformation is now statically compiled.

Works with @Memoized if @TailRecursive annotation comes BEFORE @MEmoized

Enabled static compilation of StatementReplacer since the Grooovy bug https://jira.codehaus.org/browse/GROOVY-6568 has been fixed

Added tests for all handled statements in VariableExpressionReplacer and removed todo comments