alsa: locking changes, stream limit hack, revert pipe2() change.
alsa: locking changes, stream limit hack, revert pipe2() change.

ref count waitables and move waitable processing outside of context lock.

pipe2() is only available on recent(ish) Linux kernels, so revert to pipe()
with explicit fcntl() calls again.

add a mutex wrapper that allows asserting the mutex is (and isn't) held.

padenot/cubeb,kinetiknz/cubeb,kinetiknz/cubeb,ieei/cubeb,padenot/cubeb,kinetiknz/cubeb,ieei/cubeb,padenot/cubeb