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
GROOVY-6268: section on maps
GROOVY-6572: Add faster invocation paths for call(Object) and call() in statically compiled closures
Removed wrong line in Javadoc
Fixed bug https://jira.codehaus.org/browse/GROOVY-6573
Merge pull request #325 from jlink/GROOVY-6573

Fixes Groovy 6573
GROOVY-6574: Make sure that an assignement of a boxed primitive doesn't change the inferred type of the variable of primitive type
GROOVY-6575: Type checker fails to check int[] arr = o
GROOVY-6268: some small updates to the maps section to fix a wrong included snippet and some asciidoc escaping issues
GROOVY-6577: Allow assignment of null to boolean
GROOVY-6528: Nicer error message for missing static method calls
GROOVY-6528: Double#isFinite exists on JDK8
GROOVY-6576: List literals should be using an optimized path and compile directly to constructor
GROOVY-6580: InnerClassCompletionVisitor does not overwrite existing propertyMissing/methodMissing impls completely
Attempt to fix MethodCallsSTCTest#testBoxingShouldCostMore on some configurations
GROOVY-6542: Add line number information to delegated call
GROOVY-6268: splitting logical & bitwise operators, and adding relational operators
GROOVY-6475: Incorrect error while checking generics of AIC
Merge pull request #327 from andresteingress/master

GROOVY-6580: InnerClassCompletionVisitor does not overwrite existing propertyMissing/methodMissing impls completely
Documented "differences with Java"