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.
This test definitely needs a docstring and should probably be split up a bit. (It doesn't conform to Twisted's current standards because the original `testQueue` predates them.)