A Queue implementation based on a double-linked list.
Allows constant time add, remove-at-ends and peek operations.