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.
You're not going to get away from fake players, we would have to completely rewrite 90% of the interaction codebase to get away from EntityPlayer.Fake players should have enough context to be useable, most notibly the user id.