Simplify

* Use Array instead of linked list
* Don't pass `arguments` around
* Move logic from pop to defer

This saves 18 bytes in queue.min.js, however it was mostly an attempt at trying to refactor the code to be less "magic" and more explicit. Do whatever you want with it; this is mostly a question of style and I just wanted to show you an alternative way of implementing it.