firmware: Use progmem for strings in usb driver

Reduces .data by about 150 bytes.
firmware: Use smaller buffer in text_init()
firmware: Use PSTR() for boot menu printfs
firmware: Updates to ISP driver

- Added a separate select signal in addition to ISP reset.
- Fixed various bugs.
- Added more printfs.
firmware: Initialize RPC system after boot menu
firmware: Remove custom printf macros

I made this before I knew of printf_P, etc.

Removing this saves 1 kB of program memory and 128 bytes of statically
allocated memory (.bss).

printf.h remains so it can be used as a wrapper for including stdio.h and
avr/pgmspace.h.
firmware: use printf.h to include stdio.h and avr/pgmspace.h
firmware: Run ISP programming routine in boot menu