test_msgPayloadProtect
Message payloads must reject assignment of field names that do not already
exist, the same way SWIG-wrapped modules do (issue #305). This guards against
silent typos such as payload.sigm_BN = ... instead of payload.sigma_BN.
Only the *Payload data structs are frozen; the Msg/Reader/Recorder/Writer
and vector wrapper classes must stay unfrozen (their custom __getattr__ has
side effects), so this file also checks that a recorder can still be built.