bladeRF-cli: Use synchronous API calls for rx/tx command implementations

As noted in the libbladeRF API documentation, long operations should not
be performed in the asynch stream callbacks. Given that the rx/tx
tasks are mainly performing disk I/O in these callbacks, the synchronous
interface is more appropriate.  Secondly, the sync interface is simpler,
lending itself to more readable code.

To further improve readability, the logic dealing with repetitions and
delays in the tx command has been changed to a state machine.

Additionally, the delays in the TX command are now implemented by
transmitting an appropriate number of zero samples. This yields more
accurate delays.
bladeRF-cli: Use MUTEX_* macros from thread.h

These macros allow for deadlock checks to be compiled in.
bladeRF-cli: Fixed potential lockup when starting up RX/TX task

The `status` variable needs to be checked in the while loop, otherwise
a timeout from pthread_cond_timedwait() would be ignored.
bladeRF_cli: Reset rx/tx worker status after on successive startups

Upon a failure, a bad status value was being kept around, causing
the rx/tx tasks to not begin functioning.
bladeRF-cli: Warning cleanup (MSVC)

Fixed some type-related warnings encountered with MSVC.

size_t was uneccessy for the data_mgmt fields. These are initialized via
unsigned ints anyway.
libbladeRF: Create Cypress backend mutex in global namespace

It appears that the session namespace may be the default. Since the device shall
only be in use by 1 process in the system across all users, the global namespace
is explicitly used.