libbladeRF: [WIP] Move GPIO config to higher level format-based config fn

This needs to be a level above sync.c, as GPIO config also should
take place before running an async stream. We now verify that
no format mismatches occur.
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: [WIP] Adding async i/f to format mismatch test