final, flood fill algorithm, (tbd) making sure value does not break if choosing same value as seed point
Also optimize using stack instead of vector