Introduce a double-ended queue implemented with a growable ring buffer. Inspired from the Rust VecDeque type: <https://doc.rust-lang.org/std/collections/struct.VecDeque.html>