Per-World Permissions and groups API and more ...

This API will make CanaryMod act as if everything is global by default.
A plugin is required to change this behaviour to something else.

Groups can now have a world assigned (null if global) and permissions can be saved into
separate tables (each world has a table) to determine which permission belong to what world.
Additionally the global permissions are stored in permission table.

You can always access global settings by passing null as world.
Otherwise the fully qualified world name is required which you can get from a world,
by calling World.getFqName();

Also moved UnknownWorldException from implementation to Lib.

DataAccess now defines a getInstance() method, which needs to return a new instance
of the current DataAccess. So if your DataAccess it MyDataAccess then getInstance()
must return new MyDataAccess(). This is required to incorporate multiple tables
per DataAccess (custom table names).

Changed the groupCreate command but it's still wip.