Adds queue data structure and tests.

Queues exhibit FIFO or first in first out behavior.

With dequeuing first node enqueued is dequeued.

With dequeuing if there is a single node in the list
we ensure the last instance variable is updated
to nil.