Adding permissions to Terasology.

This adds concept of permissions to players. Each player may have many different permissions, identified by name of the permission (case-insensitive).

The local player is considered to always have all permissions.

At the moment, the only use for this is in @Command that allows specifying which permission is required to be able to invoke this. Keep in mind, that this works only for commands run on server. In the future other systems might use permissions with PermissionManager interface.

I've added two new commands "givePermission [playerName] [permissionName]" and "removePermission [playerName] [permissionName]". Both of those commands, as well as many other commands already existing in Core/Engine now require "op" permission to run them (unless you are local player).
The idea was that commands could report invalid usage by throwing IllArgEx and this was caught here. With the permission system, this changes.

I suggest throwing an existing exception type like `AccessControlException` or its superclass `SecurityException`. ConsoleImpl already catches `Exception` (doesn't report back to the client though), but a customized info. similar to IllArgEx wouldn't hurt.