Adds a queue container

Adds a queue/FIFO container, considering the feedback given in #2361.
Unfortunately, `in` implies `const`, so you can't use it in generic code, as it won't work for objects that aggregate an indirection.