Improve concurrency in multithreaded BGZF writer (bgzf_mt)

Instead of periodically stalling the caller of bgzf_write to compress
buffered data, run multithreaded compression on a 'background' workspace
while continuing to ingest data into a 'foreground' workspace. When the
foreground is full and the current round of background compression is
complete, write out the results and swap the foreground & background. This
significantly increases compression throughput with multiple cores under
most circumstances, because the worker threads don't have to wait as long
for the next batch of data to start compressing.

The n_threads parameter to bgzf_mt now specifies the number of worker
threads to spawn in addition to the main thread. Therefore, it's
theoretically possible for the process to utilize n_threads+1 CPUs.
However, in most applications the main thread is largely I/O-bound.

Maintaining foreground & background workspaces doubles the memory usage
associated with bgzf_mt, which was however modest to begin with
(~16MB*n_threads, based on the suggested upper limit of n_sub_blks).
bgzf_mt: write out compressed data from a worker thread instead of the
main thread. Prevents stalling the main thread on I/O in some
circumstances.

This change incurs some maintenance risk because it introduces use of
hwrite from different threads (the main thread and one worker thread)
without an explicit mutex. It does work out that only one thread is
writing at any given time, modulo a new assert in bgzf_raw_write, and this
will need to be maintained going forward.