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.
I would expect this to fail with two threads throwing 1000000 items at a queue of 10000. When the new enqueue fence is removed, it does. This makes me question what that fence is doing, and also the comment:
https://github.com/datastax/cpp-driver/blob/CPP-162/src/async_queue.hpp#L61-L64

Are we sure this is not having an undesired effect on mpmc queue?