libbladeRF: Apply stream timeout in sync config to device handle

Without this change, we'll see transfers timeout, despite the user
attempting to increase the length of timeouts.

This fixes #323.
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: Handle timeout_ms = 0 in lusb_submit_stream_buffer()

Using pthread_cond_timedwait() with an absolute time 0 ms into the
future is not appropriate here because timeout_ms = 0 implies "infinite
wait" in libbladeRF.