Moving cycle behavior up into the Pattern superclass, so we can easily apply cyles to any pattern.
Removed an inconsistency in the @index handling for the ForEach pattern
Redefining Cycle as a Sequence that has unlimited max_cycles by default
Choice patterns will now raise StopIteration on the second call to #next (avoids easily creating infinite loops via the grammar)
Chains with max_cycles that contain nested patterns will now cycle properly.
Removed some code smell with the public Pattern#rewind method (an optional parameter was exposed publicly that shouldn't have been)
Renamed #advance! to #advance per various Ruby style guides that say you should only have #method! if a "safe" version #method also exists.