Lots of changes to the auth plugin and permission system

First of all, groups are now added. One can assign groups permissions,
and then assign users to groups.

Permission to edit membership in a group is controlled by a permission
specific to that group, so one can assign access to modify a particular
group membership.

Permissions in general were simplified. Globs are now only allowed in
permission elements by themselves. permissions like irc.one*two are no
longer allowed. (It's not really clear when that would be useful
anyways.)

Additionally, globs are now allowed both in user permissions, and
required permissions — either side of the permission check is allowed
globs. This lets you have a command that requires a permission in the
form auth.edit.group.* (from this module). In this case, the command
doesn't care which group you're allowed to edit, but if you can edit at
least one group you can access the command.

Also added some test cases to make sure the new satisfies() function
works as expected. It no longer uses regular expressions, too.

I think that's everything.