Default state: Sending request responses

The usb_transmit_descriptor function accepts a block of data and its
size and arranges for it to be transmitted to the host. It also checks
how much of the descriptor the host asked for, because it’s common for
the host to first ask only 8 bytes of the device descriptor.

Actual transmission might have to be done in several chunks if any of
our transfers exceed 64 bytes. So let’s set up two global variables that
track where we are transferring from and how much is remaining.

Each time the transmit FIFO is ready, we send as much as we can, but not
more than the maximum size of 64 bytes, and update the globals. If the
chunk is incomplete, we’re done. (From this it follows that if the data
is evenly divisible by the max chunk size, there will be one zero-sized
chunk at the end.)

When each chunk is transmitted, we get a USB interrupt with `UTXD0` set.
That’s a signal for us to send the next one (if any).

We call the `usb_transmit_done` function when all chunks are sent.