gfxlib2: Fix off-by-one due to rounding in fb_GfxEllipse()

The top/bottom values used for the SET_DIRTY() call in fb_GfxEllipse()
could previously be calculated wrong, i.e. different than what was
actually drawn by draw_ellipse(). This could lead to the last row of
the circle's pixels to not be marked dirty, i.e. they wouldn't be drawn
until the screen was updated some other way.

This patch simply lets draw_ellipse() set the top/bottom values, to the
exact y values it used for drawing.
tests: Fix buffer overflows due to callocate()s being too small
Remove unused variable