(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.
What does the "ih", "wh", and "uh" abbreviations stand for? These seems rather arbitrary and hard to parse for a user not previously having encountered them elsewhere (like me, who has no idea apriori what the "h" stands for). 2-letter abbreviations are generally hard to separate in any context. Similarly, "wiz", "pub" and "usr" are clear to me only because I recognize them from unix and other MUD nomenclature. These abbreviations should probably be extended and/or clarified. I don't think we can assume the user of this system comes from a given background of MU*.