(PUP-1029) Add Enumeration - common place to produce an Enumerator.

The support for creating an Enumerator was in different places
(in each of the iterative functions, and in the type calculator).

This commit break out the behavior to a common class; Enumeration.
(PUP-1029) Make filter function use common Enumeration support.

This makes the filter function use the common Enumeration support
and makes it consistent with how all iterative functions should behave.

The function's documentation is also updated.
(PUP-1029) Make map function use common Enumeration support.

This makes the map function use the common Enumeration support.
(PUP-1029) Make each function use the Enumeration support.

This makes the each function use the common Enumeration support.
Documentation is also updated.
(PUP-1029) Make reduce functon use common Enumeration support.

This makes the reduce function use the common Enumeration support.
Documentation is updated.
(PUP-1029) Make the slice function use the common Enumeration support.

This adds use of the common Enumeration support to the slice function.
The documentation of the function is also updated.
(PUP-1029) Fix problem with class Enumerator btw. 1.8.7 and 1.9.3

The Enumerator class is in Enumerable::Enumerator in 1.8.7, and is
global from 1.9.3. 

This changes the tests to check if result responds to :next instead.
(PUP-1029) Fix problem with Enumerator for String chars on Ruby 2.0.0

Ruby 2.0.0 does not return an Enumerator when calling String#chars,
instead an Array with the characters is returned.

Ruby 1.8.7 returns Enumerable::Enumerator, and 1.9.3 returns Enumerator.

Long live API stability !
Merge pull request #2332 from hlindberg/pup-1029_filter-function-serving-size

(PUP-1029) Make iterative functions more consistent