Introduce custom data type for input events (joystick, keyboard..)

Until now, we were relying on a simple POD int32_t which really wasn't
getting us anywhere.