Implement slice_after and slice_when

Satisfies #2116

Rubyspace implementations of `Enumerable#slice_after` and `Enumerable#slice_when`. I'm pretty sure they're right per the discussion at https://bugs.ruby-lang.org/issues/9826 and https://bugs.ruby-lang.org/issues/9071, and they pass the tests given, but I'd appreciate more eyes on them.