Correct types for RPCs

I hadn't updated them to include the references which are now
returned.

Another thing dialyzer (and the spec tests) complained about was that
`#subscribe{}` and `#unsubscribe{}` were being constructed with an
undefined `message_id` field. It is necessary to do so, because the
records are constructed in the calling process, but the message_id is
assigned by the connection process (the serial number is part of its
state). To allow this, I gave the *record* field the type `'undefined'
| message_id()`, but constrain the frame *type* (in the sum
`mqtt_frame()`) to `message_id()` only.