update #authorize to be able to pass additional arguments to policy methods

I have a closed system where user shouldn't  see nested controller#index when he cannot access the parent controller #show 

so something like: `cats/123/caught_mouses`

so there is one  way to do it  

```
class CaughtMousesController < ApplicationControllerd
   def index
      @mouses = @cat.mouses.
      authorize(@cat)
      authorize(@mouses)
   end
end
```

but I think this way I'm shifting responsibility of determining correct access from policy to controller, 
and yes, in this case all I have to do is just `authorize(@cat)` but what about `cats/123/caught_mouses/234/edit`  ... let say I can see cat 123 but non necessarily can edit caught mouse

so another way: 

```
class CaughtMousesController < ApplicationControllerd
   def index
      @cat.mouses.
      authorize(@mouses, index?: @cat)
   end
end

class CaughtMousePolicy
 
   def index?(related_cat)
      CatPolicy.new(user, related_cat).show?
   end
end
```

yes technically I can just allow the index and list no `caught_mouses` but I don't want to allow user to be able to load mice#index if he cannot see the cat

so this pull request is allowing you to pass additional argument to permission check