Add generic support for variable length structs

Definitions of such ioctls must provide a get_data_size() function which
returns the number of bytes based on the ioctl number and the data pointer.

Just as with the simple structs, these must not have any pointers to
substructs.