libbladeRF: add Windows install dir to find_file()'s search path
libbladeRF: Apply stream timeout in sync config to device handle

Without this change, we'll see transfers timeout, despite the user
attempting to increase the length of timeouts.

This fixes #323.
libbladeRF: Fixed use after free

The `stream` pointer is freed in async_deinit_stream, so it cannot
be dereferenced when unlocking a device's control lock.  However,
it is safe to store a pointer to the device handle associated with the
stream, as this is still valid.
libbladeRF: Fixed deadlock condition

Functions in async.c shouldn't call back up into the top-level API
functions in bladerf.c. Lock acquisitions in the API top level would
yield deadlock if this error case occurred.
libbladeRF: Handle timeout_ms = 0 in lusb_submit_stream_buffer()

Using pthread_cond_timedwait() with an absolute time 0 ms into the
future is not appropriate here because timeout_ms = 0 implies "infinite
wait" in libbladeRF.
cmake: Skip libc & libusb version checks when cross-compiling

These checks break cross-compilation, as they require code to be
run on the host machine.
cmake: Fixed if()/endif() mismatch

This was mistake was introduced in 62a0ab5e.
host: Enable short source file name and line # in log output by default

When making log_* calls, add these two lines to the corresponding
CMake file prior to add_library() or add_executable():

    set(SRC_TO_SHORTEN ${MY_SRC_LIST})
    include(ShortFileMacro)

Many thanks to LazyDodo for providing the CMake approach for doing this,
and to rwr for suggesting this change.
libbladeRF: Added samples <-> bytes conversion routines

These will become the preferred method of performing such
conversions in upcoming commits, where additional formats
will be added.
libbladeRF: Added simple test to check for RX discontinuities

This program enables the FPGA's internal 32-bit counter mode and
looks for any gaps in the received data, which would be indicative
of the host or USB i/f failing to keep up with the sample rate.
libbladeRF: Added support for Cypress Windows Driver & API backend

A USB backend based atop of the Cypress CyAPI (which is based atop the
Cypress CyUSB3 driver) has been introduced. This is intended to provide
Windows users with an additional driver to use if they encounter issues
with their USB host controller and libusb.

To build and use this backend, the Cypress FX3 SDK must be installed and
the following CMake flags should be provided:
    -DENABLE_BACKEND_CYAPI=Yes -DFX3_SDK_PATH=<path to SDK>

A modified cyusb3.inf is provided in host/drivers/windows/cyusb3. Upon
performing a build this inf file and the associated driver files from
the FX3 SDK will be copied into the "output" directory along with the
bladeRF.dll and bladeRF-cli.exe. To install the driver, point the
Windows driver update to this location and accept the warning about the
driver being unsigned; this occurs because the Cypress driver wasn't
signed with bladeRF VID/PID values.

The libbladeRF device string for this backend is: "cypress"

Many thanks go out to LazyDodo for all his efforts in spearheading the
development of this backend -- much of this code is either his doing or
is directly based upon his efforts.
bladeRF-cli: Updated backend names reported by info/probe
libbladeRF: Don't fail out of probe/open if device can't be opened

libusb appears to return a "not supported" error if a device is currently
associated with a different driver, such as CyUSB3.

We'll want to continue looking for libusb devices rather than bail out
if we encounter this error, as we may have hit a device belonging to
our CyUSB backend
libbladeRF: Updated default backend selections, remove unused items

The libusb and Cypress backends are now defaulted to ON if they are
detected on the system, and OFF otherwise.

The deprecated Linux kernel driver option has been removed. It will
be re-added if and when this code is updated/rewritten.

The "detach kernel module" libusb option has been removed, as it was
unused anyway.
libbladeRF: Minor touch-ups in libusb backend

Removed switch() on sample format and replaced it with a call to the
new async_stream_buf_bytes(). This will become more relevant in upcoming
changesets when new formats are added.

Other changes are just aesthetic house-cleaning items. Shortening some
lines and long variable names.
cmake: Set FX3 SDK path variable's default value from environment variable

The FX3 SDK installer creates the FX3_INSTALL_PATH variable, so there's
no need to hardcode a default path.
libbladeRF: Updated README.md

Added new backend option, removed documentation for items removed
in commit ee618d3e1.
host: Updated README.md

Updated backend flags and removed items from ee618d3e1.

Added additional Windows build information and the availability
of the Cypress backend.
cmake: Fixed 'make uninstall' issue (#314)

This addresses an error where 'make uninstall' would fail with:

    CMake Error at cmake_uninstall.cmake:4 (message):
        Cannot find install manifest:
        "<path>/build/host/install_manifest.txt".

The problem was that using CMAKE_CURRENT_BINARY_DIR in
cmake_uninstall.cmake wasn't really appropriate in our particular case,
as the "current" directory would be host/ once CMake dove into that
subdirectory.  This has been changed to CMAKE_BINARY_DIR to ensure
we're reference the top-level of the build.
libbladeRF: Check for BLADERF_FORCE_NO_FPGA_PRESENT environment variable

Setting this environment variable forces libbladeRF to always report
that no FPGA is loaded, rather than query the device.

This is intended for debugging and to provide a workaround for
issue #327, where users with a pre-v0.0.1 FPGA being autoloaded from SPI
flash are unable to open a device handle because the FPGA does not
supply a version number (which is now required by libbladeRF).