doc: block diagram of HackRF

Source: http://2013.hackitoergosum.org/presentations/Day2-04.HackRF%20A%20Low%20Cost%20Software%20Defined%20Radio%20Platform%20by%20Benjamin%20Vernoux.pdf
Merge pull request #98 from mikeryan/blockdiagram-images

doc: block diagram of HackRF
usb: Add usb_endpoint_append_td

This implements the procedure for adding a TD to the end of an active
queue described in UM10503 Section 23.10.11.3.
usb_queue: Introduce queue management
libhackrf: Stop streaming before killing transfer thread
hackrf_usb: Port to use usb_queue
usb_descriptor: Fix whitespace
usb_descriptor: Add description strings for configurations
usb_standard_request: Sent descriptors can be const
usb_standard_request: Multiple config support

GET_DESCRIPTOR would only return one configurations. This fixes that.
xapp058/ports: Clean up comments and dead code

It's still not pretty but it's an improvement
cpld: Stream CPLD data from host

Previously CPLD programming involved a large 64kbyte buffer into which
the the entire bitstream would be completely downloaded, and at which
point the programming process would commence. This is needlessly
wasteful of memory. Moreover, it could lead to USB timeouts as the
firmware needs to wait the entire duration of the programming process
before returning an ACK to the host after the final SETUP data phase
packet.

Instead, we now receive 512 byte chunks of the bitstream and stream them
to the CPLD one at a time. We wait for each packet to be streamed out to
the CPLD before ACKing the packet to prevent active data being
overwritten.
hackrf: Enter cpld_update from main loop

Otherwise we never respond to SET_CONFIGURATION
hackrf_usb: Make main loop non-blocking
hackrf_usb: Update transceiver_mode on all configuration changes
libhackrf: Rework hackrf_cpld_write to use new firmware interface

We now use a separate USB configuration for CPLD updates. To avoid
misuse of the interface, hackrf_cpld_write is now a one-shot call,
expecting the entire CPLD buffer. The library will then take care that
the device is placed in the CPLD update configuration and the entire
buffer uploaded. Unfortunately, this means that users of the interface
will have substantially fewer opportunities to provide status updates to
the user.
hackrf_cpldjtag: Update for new hackrf_cpld_write interface