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.
I'd say "when the queue is ready to accept another object" rather than "when the object is placed in the queue". The object is in the queue as soon as put() returns, but the queue may then be full.