Permissions with groups: to enable user A to edit user B's objects,
create a group named like user B's username, and add user A to it.

A user can always edit its own creations, implicitly.

A superuser can always edit everyone's creations, implicitly.
authentication/can_edit_all_or_fail: faster method to figure out if all
objects can be edited by the request user.

Apparently creating a set from a list and checking for whether it is a subset
of another set is faster than the set membership look up for every list element.
Tested for both small and large sets.
Merge remote-tracking branch 'origin/master' into permissions