add some comments to the main runner
remove precalculation of "next" location on canvas
add some comments to canvas class
optimization: precalculate average colors per open pixel, rather than recalculating them N times on the fly as we look for the closest-colored spot

also, fix bug that crashed when we have more colors than pixels