GROOVY-6948: NioGroovyMethods don't work under JDK6
minor refactor (code cleanup)
GROOVY-6953: Fix regression in static compilation wrt to @DelegatesTo and maps
GROOVY-6955: Regression in the way setters are called if @DelegatesTo references a Java class
GROOVY-6963: groovydoc should honour the {@docRoot} javadoc tag
minor refactor: remove some checkstyle warnings
GROOVY-6964: Build on Windows.
Building on Windows was not supported because JarJarTask does not release a file lock.
Please read http://groovy.329449.n5.nabble.com/Build-issue-with-groovy-core-master-td5719619.html for the detail.
I fixed this problem.
Merge pull request #486 from yukoba/WindowsBuild

GROOVY-6964: Build on Windows
minor refactor: remove javadoc warning
GROOVY-6962: Fix IllegalAccessException if the target public method belongs to a package private class
GROOVY-6965: Fix ClassCastException during type checking
GROOVY-6930: Fixed possible infinite wait during extension module scanning if an error occurs during contruction of the meta-model of a class
GROOVY-6903: Add null check in getProperties()
GROOVY-6944: Add immutable collections.
Immutable collections are convenient for backtracking algorithms.

The implementation is based on Blackdrag's PCollections.
http://pcollections.org/

As the license of PCollections is MIT license,
it can be merged to Groovy, which is Apache license.

I modified API, and wrote unit tests, and fixed bugs.

What I changed.
1. All the public class names start with `Immutable`.
2. All the implementation classes are package scope and marked `Serializable`.
3. `Empty` class is renamed to `ImmutableCollections`.
4. `ImmutableCollections` can create not only empty collections but also convert from an `Iterable` to an immutable collection. HashTreePBag, HashTreePMap and  HashTreePSet, which are static convenience classes, are removed.
5. `PVector` is renamed to `ImmutableList`.
6. `POrderedSet` is renamed to `ImmutableListSet`. The name `ListSet` comes from Scala. I didn't use the name `OrderedSet` because it does not have a comparator.
7. `minus()` of PCollections can remove an element and also can remove a specified position element, but this API creates bugs on using `ImmutableList<Integer>`. Therefore I changed one to `minusAt()`. For consistency, I also renamed to `plusAt()`. And `with()` is renamed to `replaceAt()`.
8. Removed `PSequence` interface. `ImmutableStack` extends `ImmutableList` like `Stack` extends `List`.
9. A new instance can be created by `[] as ImmutableList`.
10. `Iterator` of `ImmutableList` and `ImmutableStack` are same as the original, but `ListIterator` is backed by `Object[]`. I think this is faster than the original.
11. `DefaultGroovyMethods.plus()` , `minus()`, `multiply()` can handle `ImmutableCollections`.
12. `minus(no argument)` of `ImmutableQueue` is renamed to `tail()`.
13. Renamed `Collection.asImmutable()` to `Collection.asUnmodifiable()`, and deprecated the original method.
14. Implemented `Object[] as Queue` and `Object[] as Stack`.
15. Changed `ImmutableQueue` to `ImmutableDeque`.
16. Changed scope of `ImmutableStack` to package scope. Use `ImmutableDeque` instead.
17. Changed scope of `ImmutableBag` to package scope. Use `ImmutableList` instead.
18. Added `minusAt()` and `replaceAt()` to `List` and `Object[]`