Implement firmware update (untested). Clean up argument parsing.
firmware upload: data transfer to page buffer works
checkpoint: bootloader flashing image & saving program info correctly.
checkpoint: bootloader + USB upload success