Buffer management via scarcity

Rather than putting limits on the number of items in the buffers of individual
processing stages of a stream, put a limit on the total number of frames
actively being processed by the stream.
Update buffer classes slightly

Simplify SingleBuffer since controlling the total amount of frames being
processed works quite well.
Add a double-buffer scheme, which leads to a really marginal performance
improvement (but I think it's cool).
Merge pull request #30 from biometrics/stream_processing

some updates to buffer management