Rewriting multithreading implementation

I'm taking a different strategy for the multiprocessing. Before, I was
creating a new process for each bam file and removing them when they
were finished. For some reason processes wouldn't always to end
correctly though, so now I'm going to just keep the processes always
running and pass input and output through queues. I'm trying to simplify
the code too so I'm removing things I think are superfluous.
More updates, rewrites, refactoring

I think the simpler reads from intervals engine is ready to be tested.
More updates especially to variant calling engine

I'm breaking the ability to cleanly stop the engines and restart, but
I'll deal with that later. I might be able to make some sort of
secondary queue that I can pass messages through or just empty the
in_queue and leave only STOPs.
Updates, bug fixes

Variant calling worked for small number of samples/intervals, now trying
for larger number of intervals.
README updates

Added some basic documentation. I may want to look into generating this
automatically from the docstrings in the future.
Merge branch 'gtfuse2'
README updates, small updates

More documentation in the README, some small updats to cghub.
Update to restart variant calling engine

I'd like to be able to stop and start the engine. I need to try it out.