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!
This should be replaced by the following code, to allow overwriting permissions.
Otherwise commands that are registered at a later point wouldn't be able to replace permission node.
(Found this out while implementing API, so this point is already confirmed)
````
        if (permMap.containsKey(command))
        {
            FMLLog.warning("Command %s registerd a duplicate permission!", command);
        }