Permissions API

Permissions/Groups API specification, minecraft/forge patches and default implementation by me and @AbrarSyed

This is a repull for pull request #1122 , with Lex's suggestions implemented.

Feel free to comment if there's anything else.
The problem is that anyone can just make their own ``FakePlayer`` class. The Forge fake player is fine for most things, but there are special cases where you need your own implementation with callbacks (played around with auto-villager-trading a bit in 1.6, never released the thing though).