Implement DiscoverConstructibleTypes() method with HasConstructibleCtor helper
to enumerate every non-abstract Item/Mobile subclass in AssemblyHandler.Assemblies
that has at least one [Constructible] ctor.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add ObjectIntrospection.ExtractProperties(Type) to extract public instance
properties carrying [CommandProperty] attribute, including inherited ones.
Properties include type via ObjectNaming.FriendlyTypeName, read/write access
levels, readOnly flag, and enum values expanded via Enum.GetNames.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>