host: Added a config-time libusb version check and errors/warnings

FindLibUSB.cmake now fetches the libusb version via libusb_get_version()
so that we can warn (or error out) about the system containing an
outdated libusb version.

The following policies have been based upon support experiences and the
libusb changelog:

    Windows: Error out for libusb < 1.0.19
        v1.0.19 provides Windows 8 SuperSpeed detection support,
        and appears to address a number of issues bladeRF users
        have reported with v1.0.18 and earlier.

        We force users to update here, given that some of the failures
        on earlier versions were yielding corrupted samples.

    OSX: Warn for libusb < 1.0.18:
        v1.0.16 - v1.0.18 introduced SuperSpeed and 64-bit support,
        as well as fixes for compile-time and run-time issues.

    Linux: Warn for libusb < 1.0.16:
        This is largely based upon feedback from bladeRF users. While
        older versions may work, a number of users reported that issues
        appeared to be resolved after updating libusb to >= 1.0.16.
        (It isn't always clear if the reported update included Linux
         distro upgrades that included kernel updates.)

The version check may be skipped via LIBUSB_SKIP_VERSION_CHECK=Yes.
This is intentionally not noted in the warnings/errors, as it's
preferred that users update libusb rather than just skip the check.
bladeRF-cli: return CLI_RET_* codes from calibrate_dc()

The caller in calibrate.c expects CLI return codes, not libbladeRF
return codes.
libbladeRF: Added CMake variable to disable USB timeouts

When debugging the FX3, NIOS, or FPGA, it's helpful if the host
side isn't constantly timing out. These can be disabled by defining:

    LIBBLADERF_DISABLE_USB_TIMEOUTS=Yes
hdl: Added ATSC TX FPGA implementation

This revision introduces an FPGA-based ATSC transmitter to offload the
pilot insertion, filtering, and shift to baseband.

This design expects that 4-bit ATSC symbols are written to the device in
little-endian 32-bit words, as shown below.

        |<-------                               32 Bit Word                                     ------->|
Bit     |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
Symbol  [ X|   7    ][X|  6     ][X|   5    ][X|    4   ][X|   3   ][X|   2     ][X|    1   ][X|    0   ]

The FPGA transmits Symbol 0 first, and Symbol 7 last. The three
least-significant bits in each symbol's nibble contain values 0 to 7,
mapping to values of -7 to 7, with the most-significant bit left unused.

This FPGA image may be built by specifying the "atsc_tx" image to the
build_bladerf.sh script. The resulting output files will be
atsc_txx40.rbf and atsc_txx115.rbf for the x40 and the x115,
respectively.

Transmitting a pre-made stream on channel 14-1 can be achieved with the
following commands in the bladeRF-cli:

    set frequency 473000000
    set samplerate 32286713 2867 10000

    set txvga1 -4
    set txvga2 20

    tx config file=<path to file> repeat=0 delay=0
    tx start
libbladeRF: Added additional elaboration to SC16Q11 format
hdl: Added option to divide sample counter by two

The sample counter increments once per I and once per Q. However,
the host side will want timestamps that increment once per entire
sample.
hdl: Fixed timestamp readback.

Inserted an appropriate handshake to the time_tamer module for reading
back the current timestamp of either the TX or RX timestamp.
hdl: Fixed timing issue in time_tamer.vhd

Some bits of the timestamp values were reading out incorrectly.
Registered the output on the rising edge of the clock to address this.
hdl: Making some timestamp changes.
hdl: Adding TX NOW and RX metadata gating.

Adding a zero sample to the beginning of the burst tests so initial
power out from the LMS is minimized.

I tried adding a single sample to the DAC output but it didn't seem
to want to work appropriately, so there is around 700us worth of output
power after an initial boot of the board and loading of the FPGA.
hdl: Sending a few more samples when first enabled

Helps mitigate the high default output power from the LMS after
initialization of the device.  The observed time appears <200us.
hdl: Keeping contnuity of RX samples.

During an RX sample overflow, keeping the metadata timestamp and
the sample stream in-sync with each other.
libbladeRF: Removed SC16_Q12 reverse compat macro

This has been scheduled for removal since RC1 and RC2.
libbladeRF: Updated outdated comments

The situation has changed since thread-safety changes in 7b0cc24f.
libbladeRF: Added API definition for FPGA counter mode enable bit
libbladeRF: Introduced timestamp metadata support for sync data i/f

API support for timestamp metadata has been introduced. This is made
available when using the newly introduced BLADERF_FORMAT_SC16_Q11_META
format value.

When using the synchronous interface, metadata is exchanged between the
caller and the API via the updated bladerf_metadata structure. Users of
the asynchronous interface must currently manually manage the metadata
headers as desired, as documented in libbladeRF.h.

When using the BLADERF_FORMAT_SC16_Q11_META format in conjunction with
the synchronous interface, it is possible to retrieve the timestamp for
received samples and an indication of overrun.  An RX operation may also
be scheduled for at a specific timestamp value the future.  Similarly,
bursts of samples can be scheduled to be transmitted at a specific
timestamp value, or at the first available timestamp ("now").
libbladeRF: Added more complete examples for the synchronous interface

The existing bladerf_sync_rx() snippet in the libbladeRF API docs has
been replaced by a more complete snippet in libbladeRF/doc/examples.

From now on, major snippets and examples to be included in
Doxygen-generated documentation shall now be placed in the
libbladeRF/doc/examples directory, and must be buildable and testable.

The Doxygen "snippet" command to shall be used to include the relevant
code from the example program.

libbladeRF: [WIP] Use a simple delay to wait for TX samples in example
libbladeRF: Made enumeration value references Doxygen links
libbladeRF: Fixed CMakeLists.txt regression (enabling sync verbosity)

ENABLE_LIBBLADERF_SYNC is no longer used, as this interface is now
always present. Since this CMake variable is no longer set, this was
preventing ENABLE_LIBBLADERF_SYNC_LOG_VERBOSE from taking effect.