Adds a queue container

Adds a queue/FIFO container, considering the feedback given in #2361.
If `capacity` can never be negative, why not make it a `uint` instead of an `int`?