libbladeRF: Dynamically load SHGetKnownFolderPath in file_ops.c

This addresses issue #305, where mingw builds were failing because
SHGetKnownFolderPath appears to be missing from libshell32.a.
bladeRF-cli: Centralized checking of device presence and FPGA loaded state

These checks now occur once before a command is executed.

A subsequent commit will remove checking from the implementation of
each command.
bladeRF-cli: Removed per-command device presence and FPGA state checks

These checks are now performed in a single location prior to command
execution (in cmd.c), as of 2cf4111aed816748b91c06518a46d6d89ab16fe4.
bladeRF-cli: Fixed copyright date

This adjustment reverts a mistake I introduced while staging the
patch for 2cf4111aed816748b91c06518a46d6d89ab16fe4.
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.