It kinda works >.>
Refactored all of the uglyness into one like of uglyness
Made the interaction with the output queue the same

I'm an idiot. If I push half the things and unshift the other half, of course the state will be wrong <.<
Got rid of debugging message
There's still a difference between queues and I'm still an idiot

in the final step of the algorithm, it now uses reverse_each to simulate popping elements off of a stack