This introduces an EnumeratorAdapter so everything coming in looks like
an Enumerator. It doesn't use the adapter if the #peek method exists on
This allows for sequences like:
sequence(:cities, %w[Boston Atlanta Detroit Seattle].cycle)
This also makes it easier to cycle through arrays and ranges, since they
can be converted to Enumerators rather easily.
sequence(:month, %w[foo bar baz].to_enum)
This doesn't handle when calling Range#step out of the box, because
Ruby returns an Enumerator but ActiveSupport 3.x returns an array,
meaning #to_enum still needs to be called.
Closes #339, #378