Queue implementation
Keeping invariants from book, better tests