Permission cache overhaul

* Reworked group permission caching in session data (follow-up to cd45c30ab2dcc44bfbfac283d15bb09b3d4644bc)
 * Removed duplicated information from session data in favor of direct pointer to group settings.
 * Added getters for all group data required to process permissions and related stuff.
 * Added new functions to PC interface and updated calls everywhere.
 * Extracted function to set new group for a player (used at login, group config reload, manual adjustment of group).
* Improved dummy map session handling.
 * Since it's required for all map sessions to have a valid group, dummy sessions are now created by a designated function.
 * Updated related code that uses dummy sessions (console `gm use` and script `atcommand`, `useatcmd`).
* Various minor improvements and cleanups.
 * Eliminated some global variables related to loading atcommand permissions for group by passing them directly to function.
 * Moved definition of global array holding PC permission names from header file to source file.
 * Streamlined destuction of atcommands database to use DBApply helper function instead of DBIterator.
 * Replaced hardcoded position of console dummy session with defines from mapindex.h (thx Haruna for pointing it out).
 * Removed fixed length restriction on group names.