Improve consistency of behavior around closed rooms

At current, closed rooms allow you to enter them with an invite code, however allow, invite, lock, unallow do now work for closed rooms.  This PR makes those base-level user-control functions available.

Note that things that affect users IN the room are unavailable.  Owners cannot be added or removed.

The big part of this change is the change to IJabbrRepository.VerifyUserInRoom to add the optional mustBeOpen parameter.  This is called by the me, nudge, topic, welcome commands, as well as from the chat hub and chatservice.  For the service and hub, the call sites have been updated to include mustBeOpen: false.  For the four commands, previously users could set those (even if it wasn't possible without messing with the UI), now they cannot.

I've added a bunch of tests to exercise this functionality.