Convert Coloring from an implementation on an Iterator to a Structure that has `init()`, `feed()`, and `query()`
This will enable us to loop over the iterator once, and feed it into n
different structures, to perform the geometric spacing of the algorithm much easier.