pub fn flood_fill<P>(image: &Image<P>, x: u32, y: u32, fill_with: P) -> Image<P>
where
    P: Pixel + PartialEq,
{
    let mut filled_image = image.clone();
    flood_fill_mut(&mut filled_image, x, y, fill_with);
    filled_image
}
Equivalent to bucket tool in MS-PAINT
Performs 4-way flood-fill based on this algorithm: <https://en.wikipedia.org/wiki/Flood_fill#Span_filling>
src/drawing/fill.rs