Update threading model for stream (again)

Change the threading model used in stream slightly, generally as a given frame
is processed a single thread will attempt to continue working on it as it
progresses through the processing stages. Frames will be queued if a single
thread stage is already occupied when the thread gets there.

This update can be used with a large total number of frames being processed
without, while still maintaining relatively smooth playback by giving later
stages higher priority in the qt thread pool.
Update handling of waiting for parallel work

Release a thread from the global thread pool whenever we wait for a parallel
job to finish. This means we don't waste one of the global thread pool's
threads, and can maintain full CPU utilization.
Merge pull request #36 from biometrics/horizontal

Updated threading for stream, updated waiting for parallel work to finish