For AOA keyboard and mouse, only input events were asynchronous.
Register/unregister were called from the main thread.
This had the benefit to fail immediately if the AOA registration failed,
but to support gamepads we want to open/close AOA devices dynamically.
Also, it is better to avoid USB I/O from the main thread.