Fixes return types of various ioctl helpers to be uintptr.
This saves us some typecasting in code which used them
and thus helps keep the Device API implementation cleaner.
Adds Device.RepeatState and Device.SetRepeatState methods.
These allow us to get/set the repeat state of a device.

The values indicate (in milliseconds) the delay before
the device starts repeating and the delay between
subsequent repeats. This might apply to a keyboard where
the user presses and holds a key.

E.g.: We see an initial character immediately, then
another @initial milliseconds later and after that,
once every @subsequent milliseconds, until the key
is released.
Adds the Device.KeyMap and Device.SetKeyMap functions.
These allow us to examine or change the way keys are
mapped on a physical keyboard.

For instance, pressing the M key will send KeyM to
the input core. Using SetKeyMap, we can remap it to
emit any other scancode instead.
Changes the wait timeout in the 'read' example program.