Removing $_ modifications in list functions

According to PBP, modifying $_ within map, grep or first is *really* not a
good idea, since $_ gets aliased within the list function, thus unexpected
things can occur.  One recommendation in PBP is to simply modify a copy of
each list element and thus avoid the problem (this is the solution presented
in this commit).  Alternatively, one could rewrite the map/grep/first as a
for loop, thus making the side-effects more explicit.  Here is how that
would look in _build_transformed_matches():

my @newly_transformed_matches;
for my $match ( @transformed_matches ) {
    push @newly_transformed_matches, $self->transform( $match );
}
@transformed_matches = @newly_transformed_matches;

This does the same thing (i.e. the tests pass, and Devel::Cover tells me
that the code is exercised by the tests) and may be more
readable/maintainable depending upon one's point of view.