Make role permissions dynamic

Allow for permissions to be registered dynamically. This will allow for the ability for models and plugins to register permissions.
Isn't this only necessary in `include/staff/role.inc.php`? Any place where a permission is checked, the foreign class should definitely be registered before checking. Furthermore, what's being registered is just the UI part. The code name (which is a constant and is passed to ::hasPerm) is checkable without the description