Implemented Rabin-Karp rolling hash class abstraction.
After testing muliple algorithms for efficient substring searching in a stream
abstracted by a ring buffer, I've dropped the idea of using KMP in favor of
implementing my own algorithm based of the Rabin-Karp rolling hash algorithm.
I'd like to be able to track when an issue is not being used, in addition to
when I'm not actively working on issues. Therefore I introduced `cancelled` and
`hold` status.
ID: 3
Type: bugfix
Title: move unit tests to subdirectory
Status: in-progress
Priority: high
Created: 2025-05-04
Description: move the unit test suites to a unit/ subdirectory so that
integration tests and benchmarks can be cleanly separated