This patch makes it so text in the text editor may be smooth scrolled.
Works by making st->top, st->left as floats, then calculate draw offsets and adding them to the draw coordinates.
This patch makes some changes in draw order so that text may be scrolled horizontally behind line numbers margin.
Does not change the behavior of scroll operators which use fixed values, e.g a mouse wheel still scrolls three lines. However drag scrolling (middle mouse pan, text scroll bar) now applies delta directly to st->top and st->left without being accumulated.
Also added behavior to reveal line when setting cursor on a partially visible line.