This code uses existing system command functionality. The I2C
registers are placed in front of system command register, to
allow for a single transaction proxied I2C A reads/writes.
Not tested, yet.
Polling mode was supposed to help with broken keyboard matrix, where
some keys are stuck, but this is handled well by the pre-existing code
already, so there's no need for this.
Start with 0xff instead of 0x00, so the CRC will be nonzero (and length
dependent) for data that is all zeroes.
Remove unnecessary masking, since `crc` is already an 8-bit integer.
I2C register layout changed a bit to make various operations easier
to implement in FW and for the user.
Flashing/debugging tools now share more code. Firmware is now more
configurable (it's now possible to compile-out various features).
Self-testing for column-shorts is implemented.
Firmware is optimized for low power consumption.