Make read()/write() hide all the details of handling the USB Mode
Protocol.
Unfortunately this also introduces 4 bytes to the .bss segment which
was removed because of lack of FW_RAM, originally just 1 kB. We add
back support in start.S and the linker script.
We don't use any .data or .bss segment at all to keep all the firmware
variables in the stack in protected fw_ram.
Signed-off-by: Daniel Lublin <daniel@lublin.se>