Implement a console for debugging.

Use RAW HID protocol to send and receive data because HID protocol doesn't need
speical drivers to be installed on the host. Compatible with prjs's hid_listen
tool.
Only sending from device to host is currently supported.
Make usb code interrupt based.

First step towards a cycle independent firmware.
Remove redundant member in Key class.
Merge branch 'debug-hid'