Implement Permissions checks into Core

I may have missed some spots...
I think this is bigger/more complicated than it needs to be. Why not have the primary+characters loops once using grantsPermission()?