fx3_firmware: add "Fast Read" functionality

Sometimes (when we only read from the device) when we want speed and only read
from the flash it is useful to ignore certain parts of the read procedure.
Generally a SPI call should not finish unless CyFxSpiWaitForStatus() will return
immediately on the next invocation.
fx3_firmware: change GPIF loader to be a 16bit wide bus

This change is needed by the flash based FPGA autoloader because it requires
access to the GPIF and SPI at the same time.
fx3/makefile: fixup building on Windows

There is no touch.exe that ships with the SDK on Windows, touch must not be used
in the Makefile. mkdir can also exit with status code 1, indicating it cannot
create an already existing directory, this should not stop the build from
continuing.
libbladeRF: add FPGA flash autoload functionality

This commit adds the command line and libbladeRF support for flashing an image
to flash so that the bladeRF will auto-load the image when it boots. An rbf can
be loaded by running `bladeRF-cli -H ./hostedx40.rbf`. This will cause the FX3
firmware to load the FPGA image from flash the next time the unit boots, this
should not cause any problems reprogramming the device after it's already
loaded. To disable the auto-load feature after enabling it run
`bladeRF-cli -H X`, this destroys the FPGA image stored in flash.
fx3_firmware: add FPGA flash based auto-load functionality

The FX3 will now look at sector 1024 to determine if there is an image for it
to load from flash. In case there is, it will configure the SPI controller,
enter FPGA config mode, and override the DMA engine to load the image.
libraries: add encode_field() function

This function is the inverse of extract_field(). It creates binary blobs that
can be interpreted by encode_field().
libbladeRF: correct bounds checking error

Directly combining page offsets and bytes does not yield correct answers.