catch exceptions in fetch_flights threads
This identifies if any of the threads has thrown an exception, and then signals all threads to quit if an exception has been raised. The thread exception is re-raised after all threads have stopped.
closes #10 (closed)
This series also includes a fix for a race condition when thread streams are closing.
don't squash, review individual commits