libbladeRF: Introduced thread-safety to the API

Top-level API functions now acquire a per-device "control lock" before
performing control, programming, and low-level access operations.
(Specifically, these are the functions that manipulate the device handle
and utilize the FX3 <-> FPGA UART.)

Synchronous data transfer functions now hold a per-device, per-module
"sync lock" to ensure these operations are carried out atomically. The
control lock is also held during sync configuration, as upcoming changes
to introduce metadata support will require flipping some config bits on
the FPGA during this operation.

Only these top-level functions shall acquire these locks; the core logic
code should be able to assume that locks are already acquired.

To alleviate confusion, functions that are *not* part of the API, and
therefore are safe to call within the core logic, are stripped of the
bladerf_ prefix.

Now that pthreads is a required dependency, use of the sync API is
is no longer marked optional in the libbladeRF build.
ENABLE_LIBBLADERF_SYNC and related items have been removed from the
CMake build.
libbladeRF_test_ctrl: Rearranged test definitions and macros

This will allow an upcoming thread test to execute other tests.
libbladeRF_test_ctrl: Error out on invalid test name
libbladeRF_test_ctrl: Removed use of (s)rand()

Using a quick and dirty xorshift() implementation to more deterministic
behavior across systems.
libbladeRF_test_ctrl: Restore sample rate to "default" value
libbladeRF_test_ctrl: Added threaded test

This test runs some of the other control tests while concurrently
running RX and TX sync calls.