GROOVY-6940: Subscript operator causes VerifyError in markup templates
Added documention for core programming structure. Added test cases as well
Remove the conflict indicators
Moving all codes from ascidoc to Groovy scripts. Modified the test cases, all green
Merge pull request #484 from antoaravinth/doc-patch-2

Added documention for core programming structure. Added test cases as we...
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[]`