Make `.grep: { /regex/ }` work again
Make `.grep: { /regex/ }` work again

This worked for the slightly dubious reason that `grep` happened to set
`$_`, and boolify the regex that was returned. This was relying on an
implementation detail - there's nothing that says `grep` has to have the
test element in its `$_` - however there's code in the wild that relies
on this construct, and it's hard to argue that it shouldn't DWIM.

It stopped working when the `$_` in `grep` ceased to be dynamically
available, as it no longer needs to be. For now, solve it by making
`grep` explictly handle the case where a Regex is returned to it. This
fixes #2614. If in the future we accept the proposal that a regex will,
when cloned, capture the `$_` in the scope it literally appears in for
the purpose of use in boolean or sink context, as proposed in #2608,
then this change can be removed again. It's also a good sign for that
proposal that it happens to solve this problem neatly.

MasterDuke17/rakudo,Gnouc/rakudo,salortiz/rakudo,tbrowder/rakudo,tbrowder/rakudo,tony-o/rakudo,tony-o/rakudo,tbrowder/rakudo,tony-o/rakudo,nbrown/rakudo,salortiz/rakudo,Gnouc/rakudo,MasterDuke17/rakudo,tony-o/rakudo,MasterDuke17/rakudo,nbrown/rakudo,salortiz/rakudo,softmoth/rakudo,softmoth/rakudo,tbrowder/rakudo,softmoth/rakudo,MasterDuke17/rakudo,rakudo/rakudo,softmoth/rakudo,MasterDuke17/rakudo,Gnouc/rakudo,tbrowder/rakudo,labster/rakudo,salortiz/rakudo,Gnouc/rakudo,rakudo/rakudo,labster/rakudo,tony-o/rakudo,tbrowder/rakudo,softmoth/rakudo,salortiz/rakudo,rakudo/rakudo,nbrown/rakudo,labster/rakudo,labster/rakudo,rakudo/rakudo,labster/rakudo,nbrown/rakudo,labster/rakudo,salortiz/rakudo,nbrown/rakudo,MasterDuke17/rakudo,rakudo/rakudo,Gnouc/rakudo,nbrown/rakudo,Gnouc/rakudo,rakudo/rakudo,tony-o/rakudo