[io grant] Fix $*CWD inside IO::Path.dir's :test Callable
[io grant] Fix $*CWD inside IO::Path.dir's :test Callable

Fixes two issues:
1) When user passes :CWD arg, the expectation would be that
    :CWD is available as $*CWD inside :test
2) Because we use `gather` by the time we get to run the :test
    Callable, we might already be outside even a user-set $*CWD,
    such us when using `&indir`, so the $*CWD used will be wrong

Fix by giving `gather` its own $*CWD to use. We use a temp var to
avoid issues with .IO coerser using an empty $*CWD for :$!CWD
param and we don't use `temp` because it's 2x slower than a temp var.

Bug find: https://irclog.perlgeek.de/perl6-dev/2017-04-21#i_14462573

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