CPP-162 - Fix for spurious request hang

Refactored/Simplified SPSC and renamed some variables in MPMC to be
more consistent. Added some tests for both.
What is the purpose of this 'guard'?