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.