usb_dev: Double buffer IN packets instead of quad-buffering

Only store two packets of pre-fetched read data, as this is sufficient for
most cases.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
usb_dev: Program data to chip on IN packets

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
doc: Document USB control transaction for set_chip_size()

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
libqiprog: Add qiprog_read_chip_size() call

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
usb_master: Implement set_chip_size() call

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
usb_dev: Respond to SET_CHIP_SIZE control transactions

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
usb_master: Send SET_ADDRESS request when range is larger

When the range we want to read or write extends past the max address range,
send another SET_ADDRESS request.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
qiprog: Adapt to new address range conventions

* qiprog_set_chip_size() must be called after reading the chip ID
* Addresses start from 0, regardless so of the chip/bus

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>