Generalize ioctl recording and emulation for ioctls with simple structs

ioctls have the size of their data encoded in the number, so we can generalize
ioctl implementation for structs which do not have pointer fields which need
separate allocation/deallocation. This makes it much easier to add more ioctls
in the future.

COMPATIBILITY BREAK: This does not work any more with recorded
USBDEVFS_CONNECTINFO ioctls from version 0.1.