A promise stack class, returning a promises, which is fulfilled when all the promises in the stack have been fulfilled.  Different to Q.all() in that more promises can be added to the stack asynchronously.  Use