zm: Don't deserialize single signal arg as tuple
The signal message body deserialization currently fails because of signature mismatch when dealing with single struct arguments. Let's fix that by not wrapping the body type in a tuple for single arguments.