fill polygon with specified color

The polygon must be provided in clockwise or counter-clockwise order
(not applicable for concave polygons), as the areas need coloring will
be calculated with the order.
make fill_polygon available to client
bugfix for fill_polygon

It can now basically work.
fully fill polygon including borders
fully fill borders and vertexes in fill_polygon
fully fill polygon

In many cases, a line between two points can have more than one pixel on
the same row. Even though we have made the row_end not be drawn, it only
affects one pixel, which is the last, among the multiple pixels on each
row. All the other pixels will be drawn twice, making it disappear in
the xor map.

A new method is to make the row_start be the last of continuous series
on each row, and as row_end is also the last, none of the continuous
pixels will be drawn twice.