Rework the ringbuffer class so that it's not templated, and refactor its clients so they aren't dancing around the linker anymore.
ringbuffer: converted to item_size units

this fixes a number of indexing bugs