Permissions API

Permissions/Groups API specification, minecraft/forge patches and default implementation by me and @AbrarSyed
If they are going to use a fake player, than it should be trivial to just pass in a UUID and LocationCOntext using one of the other methods. It is also because if the same FakePlayer is reused by a mod (using the same UUID), server admins will be limited to blanket-banning the entire mod instead of just the owner of that particular machine.