Updates to the wireframe command:
- Expand wireframe direction parsing to support full movement set: 8 compass + up/down/out/fore/aft/port/starboard (with short aliases)
- Treat any non-cardinal token as an Exit (OtherExit) type so builders can wireframe door|gate|arch|stairs|...
- Auto-create a reverse exit when creating a new room:
- Cardinals use the opposite direction (north↔south, up↔down, fore↔aft, port↔starboard, ne↔sw, etc.)
- Other exits mirror the same keyword back (door ↔ door, arch ↔ arch, etc.)
- Don’t overwrite Area/Brief when linking to an existing room; only add exits (and reverse exit if missing)
- Add optional quoted args to set room title metadata on newly created rooms only: wireframe <dir/exit> [file] "Area" "Brief"
- Preserve current behavior of moving the builder into the destination room after creation/linking, then save updated room(s)
- Stop writing legacy Room.XmlExits <Exits><string>...exit#.xml</string></Exits> format (keep backward-compatible load)
- Serialize room exits inline by implementing getters for exit buckets (CardinalExits, Doors, MagicDoors, RestrictedExits, etc.)
- Ensure OtherExits only emits plain Exit instances (avoid derived-type duplication/serializer issues)
- Persist ExitOpeners in Room (add backing storage + real getter so <ExitOpeners> survives resaves)
- Make ExitOpener fields round-trip by reading/writing through SecretExits[0] (SecretExit, disappear/reveal messages, exit location)
- Prevent <SecretExits> output drift via ShouldSerializeSecretExits(); add ShouldSerialize* helpers to suppress empty tags
- Harden secret-exit serialization ([XmlIgnore] on OpenerExit.ContainedExit, null-safe Activated)