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).
Rather than throwing multiple different exceptions (some of them unchecked), I'd rather introduce a new checked exception "InvalidCommandCallException" and have it thrown by the CommandInfo execute method. That way we can avoid the ugly "catch IllegalArgumentException".