GROOVY-6863: Move many methods from Collection to Iterable.

These methods are added to Iterable.

containsAll(Object[])
eachPermutation(Closure)
inject(Closure)
head()
tail()
asCollection()
plus(Iterable)
plus(Object)
multiply(Number)
intersect(Iterable)
toSet()
toListString()
toListString(int)

These methods are deprecated from Collection.

eachPermutation(Closure)
toListString()
toListString(int)

I also added this method.

DefaultGroovyMethodsSupport.createSimilarCollection(Iterable)

I cannot move these methods because they exists in Object
and Groovy cannot handle properly if I move them from Collection to Iterable.

grep(Object)
grep()
collect(Closure)
collect()
collect(Collection, Closure)
find(Closure)
find()
findResult(Object, Closure)
findResult(Closure)
findAll(Closure)
findAll()
split(Closure)
inject(Closure)
inject(Object, Closure)
GROOVY-6869: Move collate() and permutations() from List to Iterable