(WIP) Collab

Opening this pull request as WIP to get feedback and more eyes on it. It is not ready for proper merge, but a few commits might be worth cherry-picking early, such as the Typeclass-aware QuerySets, and the ability to check different lock types from one lock string. Just let me know if you're going to do that so I can handle any rebasing/commit fiddling accordingly on my end.
For easy reference to the contrib and for compatability, these settings should be prefixed with `COLLAB_`, like *COLLAB_CREATE_TYPES`, `COLLAB_ROOM_TYPE` etc.