Now that the frontend reads from message.call (previous commit), the
message row is just a display anchor — all call state lives on the Call
record and is surfaced via the serializer / push_event_data.
- CallMessageBuilder shrinks to creating the bare voice_call message.
content_attributes.data keeps only { call_sid } as a breadcrumb and a
finder fallback for the edge case where message_id isn't linked yet.
- CallStatus::Manager stops re-writing the message on status transitions.
call.message.touch triggers the standard message.updated dispatcher so
sockets re-broadcast with the fresh Call embedded.
- Spec assertions switch from content_attributes.data.* to call.* +
message.call object identity; status update spec asserts message is
touched.