(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.
This version of Examine seems to miss one component of the default examine command, namely the result of `cmdhandler.get_and_merge_cmdsets` (an asynchronous call), which correctly takes the cmdset merge priorities into account (including those from objects in the room) and returns the cmdset actually avilable to the examined object at this moment.