Look into visitor pattern when serialization/deserializing MovementStatus

We can potentially avoid an allocation by using visit_str instead: !1275 (comment 2884983475)