Rewrote queue implementation with head and fullness instead of head and tail. Far simpler!