A queue must always keep one item empty in its backing array.

If it doesn't, then when it fills up, it will think it is empty again.
Also, fix enqueue() and dequeue(). Fix pop() but not test it.
Add another queue test.
Move app files into manual_tests.