(WIP) cmd: Re-reimplement the cbuf system using a cyclic doubly linked list
This has several advantages, namely cleaner code and not needing
a separate end pointer.
Also created a separate linked list buffer for recycling memory.
This is needed to avoid having to allocate and free every time the
player sends input of any kind. It will grow in size depending on
how big the biggest console input is, but this is okay because the
console input has its own limit, and each node uses a (relatively)
negligible amount of memory.