Add custom DeferredQueue

https://github.com/praekelt/go-api-toolkit/pull/24 requires different operation to twisted's implementation of DeferredQueue. This implementation will return a Deferred for put, which will fire when there is place in the queue.
Test docstrings don't need phrases like "This test ensures that" -- this is implicit in the docstring belonging to a test method. Rather write them more like "When the backlog of pending gets is exceeded, a L{QueueUnderflow} exception is raised."