found a bug(-ish) in the RingBuffer.

`RingBuffer n a` (arguably) should store n items, but can only store n-1
because it needs one extra slot for bookkeeping. (Arguably) we should
use GHC.TypeLits to make `insert` and `remove` have type `Ix (n+1)`.