Optimize Str.match a bit more
Optimize Str.match a bit more

Basically found a way to create a configurable iterator that doesn't
take more than the previous approach using several different iterators.
This easily allowed a much cheaper iterator that just returns Cursor
objects to be made, and used specifically in the :nth(*) and :nth(*-1)
cases, which are now about 2x as fast (for a regexp with 10 matches)
because only on the last pulled value a .MATCH needs to be done.

Also built the infrastructure to support iterators returning Str and
Pairs with from/length information, for later usage in .comb and .subst.

labster/rakudo,samcv/rakudo,tony-o/rakudo,awwaiid/rakudo,salortiz/rakudo,softmoth/rakudo,tony-o/rakudo,usev6/rakudo,tbrowder/rakudo,tbrowder/rakudo,lucasbuchala/rakudo,sjn/rakudo,tbrowder/rakudo,lucasbuchala/rakudo,usev6/rakudo,tbrowder/rakudo,salortiz/rakudo,softmoth/rakudo,usev6/rakudo,labster/rakudo,MasterDuke17/rakudo,samcv/rakudo,Gnouc/rakudo,salortiz/rakudo,softmoth/rakudo,samcv/rakudo,sjn/rakudo,lucasbuchala/rakudo,samcv/rakudo,sjn/rakudo,jonathanstowe/rakudo,awwaiid/rakudo,jonathanstowe/rakudo,sjn/rakudo,tbrowder/rakudo,salortiz/rakudo,tony-o/rakudo,MasterDuke17/rakudo,nbrown/rakudo,usev6/rakudo,awwaiid/rakudo,tony-o/rakudo,tony-o/rakudo,Gnouc/rakudo,MasterDuke17/rakudo,rakudo/rakudo,tony-o/rakudo,jonathanstowe/rakudo,raydiak/rakudo,MasterDuke17/rakudo,nbrown/rakudo,rakudo/rakudo,tbrowder/rakudo,rakudo/rakudo,awwaiid/rakudo,jonathanstowe/rakudo,nbrown/rakudo,nbrown/rakudo,labster/rakudo,Gnouc/rakudo,softmoth/rakudo,rakudo/rakudo,awwaiid/rakudo,labster/rakudo,samcv/rakudo,labster/rakudo,rakudo/rakudo,MasterDuke17/rakudo,labster/rakudo,lucasbuchala/rakudo,raydiak/rakudo,lucasbuchala/rakudo,usev6/rakudo,MasterDuke17/rakudo,Gnouc/rakudo,nbrown/rakudo,salortiz/rakudo,salortiz/rakudo,sjn/rakudo,raydiak/rakudo,softmoth/rakudo,jonathanstowe/rakudo,Gnouc/rakudo,Gnouc/rakudo,rakudo/rakudo,raydiak/rakudo,nbrown/rakudo