Minor fixes.

1. This is a @Deprecated method and very meaningless to modify, but I changed internal cast of Collection.multiply(Number) from List to Collection. This was a bug.
2. Removed meaningless @SupressWarning of Collection.grep().
3. << to &lt;&lt; in JavaDoc.
4. Fixed some wrong JavaDoc.
GROOVY-6961: fix wrong generics type extraction for extension methods by using the custom declared class instead of backing node
Merge pull request #489 from yukoba/MinorFix

Minor fixes
Introduce a BytecodeDumper class for reuse in tests
GROOVY-6968: Improvements to @ASTTest
remove the mention of the Groovy version
Fixed bug GROOVY-6778

The string "-d" is being used to escape dashes. Thus, converting all dashes to "-d" must be the first replacement that is done (it was) and converting them back must be the last (it wasn't). The bug resulted in the following erroneous conversion:

"-n" -> "-dn" -> "-n" -> "?"
GROOVY-6836: If joint compilation is active *and* that @CompileStatic is used with @Immutable, metaclasses are mixed
groovy-ant part of PR#456
GROOVY-6969: Set.flatten() should return Set
Merge pull request #493 from yukoba/SetFlatten

GROOVY-6969: Set.flatten() should return Set
GROOVY-6970: Type checker should be able to choose between two equivalent interface methods
GROOVY-6849: In case of ambiguity, type checker should be able to choose between an extension method and an interface method
Added missing documentation to BenchmarkInterceptor.java
Added javadoc comments to several Meta* classes
Fixed compilation warnings for javadoc
GROOVY-6971: try to improve performance of GeneratedMetaMethod.Proxy#proxy()
change condition mistake
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[]`