better multi-threaded fetch interface
Two main improvements here:
- Eliminate busy loop by using queue methods with timeouts.
- Wrap everything in better context managers that will stop and close down the threads when there are exceptions.
closes #17 (closed)
includes two cleanup commits, so no squash
Edited by Jameson Rollins