The attached patch implements introspecting the sbus interfaces as tracked by #2234.
There is one part of the patch I dislike, but I wanted to get other opinions, too -- the discard_const in sbus_message_handler(). I was going back and forth on whether sbus_introspect() should be an sbus handler like the other handlers or whether I should special case it (and then pass the interface directly and not through a void pointer). Special casing the introspection might be a bit cleaner, but would cause some duplication in sbus_message_handler().
The other question I have is whether there should be a way to mark an interface as not introspectable? I can't think of a reason, so by default all interfaces can be introspected.
The introspection also doesn't generate DocString annotations yet, I will send a patch for that separately.