Permissions API

Permissions API specification and default implementation by me, @olee and @AbrarSyed

Patches:
CommandHandler: Redirect all canCommandSenderUseCommand calls to a forge equivalent, which is permissions-aware
EntityPlayerMP: Allow all commands to be used, to let the permissions API handle the permission checks
NetHandlerPlayServer: Allow command blocks to be controlled by permissions

This commit introduces a new way to handle command registrations. A new permissions-aware method to register commands is in CommandHandlerForge. Please use this instead of the FMLServerStartingEvent if you wish to be compatible with permissions (and not just assigned an auto-generated node)

This is a re-pull of #1220, we've modified the API to make it easier to use. Also switched to targeting the new branch instead of master.

Please do get in touch with us if there's anything we can do to make this API meet your needs.

NOTE: This PR will not function properly unless MinecraftForge/FML#498 is also accepted!
An example, where it is not possible:
A mod want's to get the permission "mob.creeper.spawn" for a certain point in a world.
In this context he only has a point and a dimension, but no player or entity.
Therefore a dimension context would be needed.